我一直在c# win forms项目中使用webkit.net,我喜欢在C#程序中使用以下命令调用JavaScript函数是多么容易:
browser.Document.InvokeScriptMethod("functionName", new object[]{"parameter1", "parameter2"});
现在的问题是如何反其道而行之。有没有某种事件侦听器可以侦听javascript函数调用,或者通过webkit浏览器中运行的JavaScript调用c#方法?
我现在使用的是一个糟糕的破解方式...通过查看可用的事件侦听器,我连接到了TitleChanged事件,并读取了html中隐藏的input字段的值。这真的很糟糕,需要一个实际的解决方案。
提前谢谢你,-格雷格
发布于 2011-06-21 06:37:49
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);
}
}这可能无法通过您的丑陋黑客测试,但是对于处理来自.net嵌入式浏览器的请求来说,这是一种古老的方法。实际上,您可以在浏览器中拦截URL GET请求。如果URL包含关键字(如app://),则取消GET并处理URL参数。返回值,传统上是通过调用导航方法来完成的,然而,使用您在文章中描述的方法,您可以直接调用javascript函数。
发布于 2010-11-13 04:02:41
github上有一个分支,它通过脚本对象添加了对此的支持(工作方式类似于标准的winforms浏览器)。当浏览器加载时,您可以使用webKitBrowser.ObjectForScripting = myObject来设置脚本对象,即处理js调用的类。然后,您可以在js中使用window.external.foo()调用该方法。希望这能有所帮助。
https://stackoverflow.com/questions/4146687
复制相似问题