Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用WebKit.NET从JavaScript调用C#函数_C#_Webkit - Fatal编程技术网

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

使用WebKit.NET从JavaScript调用C#函数,c#,webkit,C#,Webkit,我一直在一个c#win forms项目中使用webkit.net,我很喜欢从c#程序中调用JavaScript函数是多么容易: browser.Document.InvokeScriptMethod(“functionName”,新对象[]{“parameter1”,“parameter2”}) 现在的问题是如何反过来做。。。是否有某种类型的事件侦听器可以侦听javascript函数调用,或者通过webkit浏览器中运行的javascript调用c#方法 我现在做这件事的方式是用一个坏的黑客。。

我一直在一个c#win forms项目中使用webkit.net,我很喜欢从c#程序中调用JavaScript函数是多么容易:

browser.Document.InvokeScriptMethod(“functionName”,新对象[]{“parameter1”,“parameter2”})

现在的问题是如何反过来做。。。是否有某种类型的事件侦听器可以侦听javascript函数调用,或者通过webkit浏览器中运行的javascript调用c#方法

我现在做这件事的方式是用一个坏的黑客。。。查看可用的事件侦听器后,我连接到
标题更改
事件,并读取html中隐藏的
输入
字段的值。。。。这真的很糟糕,需要一个实际的解决方案

提前感谢,,
-Greg.

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

    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://),则取消获取并处理URL参数。返回一个值,传统上是通过调用Navigate方法来完成的,但是,使用您在文章中描述的方法,您可以直接调用javascript函数。

如果我包含以下链接,我想这会有所帮助:)有人能找到启用此功能的成功编译版本的webkitdotnet吗?谢谢