【问题标题】:How Can Execute Javascript Commands via GeckoFX如何通过 GeckoFX 执行 Javascript 命令
【发布时间】:2013-07-23 06:59:26
【问题描述】:

我尝试通过 GeckoFX 和 C# 执行类似 alert('test message') 的 javascript 命令 但我不能。

我尝试使用 Navigate 和 ExecuteCommand 没有结果

我的代码是

    int i=0;    
    GeckoWebBrowser webBrowser
    webBrowser.Navigate("alert('"+i.ToString()+"');");
    webBrowser.ExecuteCommand("alert('" + i.ToString() + "');");

谁能帮帮我?

【问题讨论】:

    标签: c# gecko geckofx


    【解决方案1】:

    您可以使用 AutoJSContext 通过 geckofx 运行 javascript。

    类似:

    GeckoWebBrowser browser = ....;
    
    using (AutoJSContext context = new AutoJSContext(browser.JSContext))
    {                               
       string result;
       context.EvaluateScript("3 + 2;", out result)
    }
    

    See EvaluateScript unittests 了解更多信息和示例。

    如果您使用的是超旧版本的 geckofx,您可能需要获取更高版本 - geckofx

    【讨论】:

    • 我使用的是 16.0.0.2 版本
    • @Tom 我知道这是旧的,但我试图使用这段代码,我有一个错误。 'Gecko.GeckoWebBrowser 不包含'JSContext'的定义,并且没有扩展方法'JSContext'接受Gecko.GeckoWebBrowser类型的第一个参数'..我错过了什么?..
    • 从版本 22 开始,您需要 browser.Window.JSContext。
    • 在版本 45 中它只是 browser.Window
    • @gumuruh 关于 vb.net 不知道该告诉你什么。您可以在v45 unit tests 中查看当前的 c# 示例
    【解决方案2】:

    对于新版本而不是 geckoWebBrowser1.JSContext 你应该写 geckoWebBrowser1.Window

    我的代码正在运行,我已经在另一篇旧帖子 here 中回答了示例

    【讨论】:

      【解决方案3】:

      在调用文档js函数时可以使用Navigate方法避免AccessViolatoinException:

      webView.Navigate("javascript:$$external.consoleLog('message text');");
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-09-10
        • 2018-11-09
        • 2011-08-20
        • 2011-05-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多