使用WebKit.NET从JavaScript调用C#函数

我一直在ac#win forms项目中使用webkit.net,并且喜欢在C#程序中调用JavaScript函数是多么容易:

browser.Document.InvokeScriptMethod("functionName", new object[]{"parameter1", "parameter2"});

现在的问题是如何以相反的方式执行此操作…是否有某种事件侦听器可以侦听javascript函数调用,或者通过webkit浏览器中运行的JavaScript调用ac#方法?

我正在使用糟糕的黑客攻击的方式…看看可用的事件监听器,我连接到TitleChanged事件,并在html中读取隐藏input字段的值…这真的很糟糕,需要一个实际的解决方案。

提前谢谢, – 格雷格。

  public Form1() { InitializeComponent(); webKitBrowser1.Navigating += new WebBrowserNavigatingEventHandler(Form1_Navigating); } private void Form1_Navigating(object sender, WebBrowserNavigatingEventArgs e) { string url = e.Url.ToString(); if (url.IndexOf("app://") > -1) { e.Cancel = true; processRequest(url); } } 

这可能无法通过你的Ugly Hack测试,但它是一种处理来自.net嵌入式浏览器的请求的古老方法。 基本上,您在浏览器中拦截URL GET请求。 如果URL包含关键字(例如app://),则取消GET并处理URL参数。 返回值,传统上通过调用导航方法来完成,但是,使用您在post中描述的方法,您可以直接调用javascript函数。

github上有一个fork,它使用脚本对象添加对此的支持(类似于标准winforms浏览器)。 浏览器加载时,您可以使用webKitBrowser.ObjectForScripting = myObject设置脚本对象,即处理js调用的类。 然后从js你可以使用window.external.foo()调用该方法。 希望这可以帮助。