首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用WebKit.NET从JavaScript调用C#函数

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

Stack Overflow用户
提问于 2010-11-11 00:34:38
回答 2查看 9.5K关注 0票数 7

我一直在c# win forms项目中使用webkit.net,我喜欢在C#程序中使用以下命令调用JavaScript函数是多么容易:

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

现在的问题是如何反其道而行之。有没有某种事件侦听器可以侦听javascript函数调用,或者通过webkit浏览器中运行的JavaScript调用c#方法?

我现在使用的是一个糟糕的破解方式...通过查看可用的事件侦听器,我连接到了TitleChanged事件,并读取了html中隐藏的input字段的值。这真的很糟糕,需要一个实际的解决方案。

提前谢谢你,-格雷格

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-21 06:37:49

代码语言:javascript
复制
    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函数。

票数 11
EN

Stack Overflow用户

发布于 2010-11-13 04:02:41

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

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4146687

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档