Vb.net 如何执行从DOM加载的javascript

Vb.net 如何执行从DOM加载的javascript,vb.net,webbrowser-control,domdocument,Vb.net,Webbrowser Control,Domdocument,我试图在通过DOMDocument加载的javascript中执行一个函数。 例如: 'on page load Webbrowser1.navigate("a htmldocument with a div called mainDiv") 随后: mDoc = WebBrowser1.Document Dim mainDiv As IHTMLDOMNode = mDoc.DomDocument.getElementById("mainDiv") mainDiv.innerHTML = (I

我试图在通过DOMDocument加载的javascript中执行一个函数。 例如:

'on page load
Webbrowser1.navigate("a htmldocument with a div called mainDiv")
随后:

mDoc = WebBrowser1.Document
Dim mainDiv As IHTMLDOMNode = mDoc.DomDocument.getElementById("mainDiv")
mainDiv.innerHTML = (IO.File.ReadAllText("a file with just a div and script"))
'File has no html, head and body tags
所以现在我需要执行追溯加载到mainDiv中的脚本。 我试过:

Webbrowser1.Document.InvokeScript("onLoadScript")
…但据我所知,此方法只能看到从navigate事件加载的DOM。 我希望有一种通过访问DOMDocument来执行脚本的方法。 谢谢你的帮助


谢谢

您可以尝试注入一个调用动态脚本的脚本。这将绕过.InvokeScript函数

HtmlElement headtag = WebBrowser1.Document.GetElementsByTagName("head")[0];
HtmlElement scripttag = WebBrowser1.Document.CreateElement("script");
IHTMLScriptElement scriptelm = (IHTMLScriptElement)scripttag.DomElement;
scriptelm.text = "onLoadScript();";
headtag.AppendChild(scripttag);

我通过替换onLoadScript()实现了这一点;带着警觉(“嗨”);所以我得到了这个概念,尽管我可以通过检查mainDiv中的innerHTML来查看脚本,但它仍然表示找不到它。如果我创建一个按钮并像那样调用它,同样适用,但是如果我导航到html,按钮就会工作。错误:“onLoadScript”属性的值为null或未定义,不是函数对象,而上面的答案对我来说不是现成的。这确实为我找到了答案。我在script标记上放了一个id='loadScript',然后用GetElementByid('loadScript')查找它。一旦找到,我就按上面的方式分配了它。重要的是更改'scriptelm.text=“onLoadScript();”;'到'scriptelm.text=scriptelm.text;'