我尝试使用c#中的c#事件来处理浏览器中从JS调用的CefSharp.PostMessage。我甚至从链接下载了一个这个工作的例子。运行示例,它应该做我需要的事情,但是它没有工作,我的代码也不起作用(下面)。CefSharp是删除了这个功能还是改变了它?我需要在CefSettings或ChromiumWebBrowser中启用这个特性吗?
using CefSharp;
using CefSharp.WinForms;
public ChromiumWebBrowser chromeBrowser;
public Form1()
{
InitializeComponent();
string curDir = Directory.GetCurrentDirectory();
CefSettings settings = new CefSettings();
Cef.Initialize(settings);
chromeBrowser = new ChromiumWebBrowser(String.Format("file:///{0}/HelloWorld.html", curDir));
chromeBrowser.JavascriptMessageReceived += ChromeBrowser_JavascriptMessageReceived;
}
private void ChromeBrowser_JavascriptMessageReceived(object sender, JavascriptMessageReceivedEventArgs e)
{
MessageBox.Show((string)e.Message);
}HelloWorld.html在这里
<!DOCTYPE html>
<html>
<body>
<script>
CefSharp.PostMessage("Hello world!");
</script>
</body>
</html>发布于 2022-03-05 17:05:35
CefSharp.PostMessage("Hello world!");是2020年JS的一个新的扩展。确保您正在使用实际的CefSharp。JavascriptMessageReceived事件的订阅已经太晚了,页面可能会被下载,JS可能会一直执行到那个时候。在页面加载之前,您应该订阅事件。chromeBrowser =新ChromiumWebBrowser(“约:空白”);chromeBrowser.JavascriptMessageReceived += ChromeBrowser_JavascriptMessageReceived;chromeBrowser.JavascriptMessageReceived curDir);发布于 2022-03-05 19:16:46
将ChromiumWebBrowser添加到表单中的位置?WinForms ChromiumWebBrowser控件在创建句柄之前不会加载,这在默认情况下是在添加到父控件时发生的。
chromeBrowser = new ChromiumWebBrowser(String.Format("file:///{0}/HelloWorld.html", curDir));
chromeBrowser.JavascriptMessageReceived += ChromeBrowser_JavascriptMessageReceived;
Controls.Add(chromeBrowser);https://stackoverflow.com/questions/71360021
复制相似问题