2010-07-23 55 views
2

我有桌面应用程序和WebBrowser控件,并尝试将JavaScript注入到加载的页面。在运行时将jQuery注入到WebBrowser

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

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");开始我的功能一切正常。

回答

1

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

+1

Hey Orsol,你能告诉我你是如何连接到网页的。我的意思是你的应用程序如何连接到页面。我真的想这样做,但不知道如何做到这一点。 – Johnydep 2011-06-03 18:01:32

+0

我在WebBrowser控件中加载页面。 – 2011-06-06 07:40:52

+0

你可以把代码如何加载本地副本? – MonsterMMORPG 2013-07-21 12:57:41

0

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

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