我一直在c#win表单项目中使用webkit.net,并且喜欢在C#程序中调用
JavaScript函数是多么容易:
browser.Document.InvokeScriptMethod(“functionName”,new object [] {“parameter1”,“parameter2”});
现在问题是如何以相反的方式执行此操作…是否有某种事件侦听器可以侦听javascript函数调用,或者通过webkit浏览器中运行的JavaScript调用c#方法?
我正在使用糟糕的黑客攻击的方式…看看可用的事件监听器,我连接到TitleChanged事件,并在html中读取隐藏输入字段的值…这真的很糟糕,需要一个实际的解决方案.
提前致谢,
– 格雷格
解决方法
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参数.返回值,传统上通过调用导航方法来完成,但是,使用您在帖子中描述的方法,您可以直接调用javascript函数.