【问题标题】:Inject JavaScript with jQuery at runtime into WebBrowser在运行时将带有 jQ​​uery 的 JavaScript 注入 WebBrowser
【发布时间】:2010-07-23 15:05:03
【问题描述】:

我有带有 WebBrowser 控件的桌面应用程序,并尝试将 JavaScript 注入加载的页面。

为此,我添加了两个脚本元素:

private static void AddJQueryElement(HtmlElement head)
{
    HtmlElement scriptEl = head.Document.CreateElement("script");
    IHTMLScriptElement jQueryElement = (IHTMLScriptElement)scriptEl.DomElement;
    jQueryElement.src = @"http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js";

    head.AppendChild(scriptEl);           
}

private static void AddScriptElement(HtmlElement head)
{
    HtmlElement scriptEl = head.Document.CreateElement("script");
    IHTMLScriptElement myScriptElement = (IHTMLScriptElement)scriptEl.DomElement;
    myScriptElement.src = @"file:///c:\JScript.js";
    head.AppendChild(scriptEl);
}

您首先看到的是对 jQuery 的引用,因为我在脚本中使用了它。当我尝试使用 _webBrowser.Document.InvokeScript 从我的脚本调用函数时,WebBrowser 抛出 脚本错误:“预期对象”。并指向我尝试使用 jQuery (var tags = $("Body").find("*");) 的行。

我怎样才能防止这个错误?

另一件有趣的事情:如果我在函数的开头添加类似alert("hello"); 的内容,一切正常。

【问题讨论】:

    标签: c# .net jquery winforms webbrowser-control


    【解决方案1】:

    没有得到正确答案,但已通过使用 jquery.min.js 的本地副本解决了问题。

    【讨论】:

    • 嘿 Orsol,你能告诉我你是如何连接到网页的吗?我的意思是您的应用程序如何连接到页面。我真的很想这样做,但不知道该怎么做。
    • 我在 WebBrowser 控件中加载页面。
    • 能否请您附上您的完整代码?我收到 $ 未定义的错误。但普通的javascript工作。
    【解决方案2】:

    您可能没有指定要在加载时运行的脚本。 alert("hello") 正在争取下载脚本/完成构建 HTML 所需的时间。

    $(document).ready(function() {
      // Handler for .ready() called.
    });
    

    【讨论】:

      猜你喜欢
      • 2012-03-28
      • 2011-08-04
      • 2014-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多