代码之家  ›  专栏  ›  技术社区  ›  Greg

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

  •  7
  • Greg  · 技术社区  · 15 年前

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

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

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

    TitleChanged 事件,并读取隐藏的 input html中的字段。。。。这真的很糟糕,需要一个实际的解决方案。

    -格雷格。

    2 回复  |  直到 15 年前
        1
  •  11
  •   plan17b    14 年前
        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参数。返回值通常是通过调用Navigate方法来完成的,但是,使用本文中描述的方法,您可以直接调用javascript函数。

        2
  •  5
  •   Kevin    15 年前

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