1

我正在尝试在通过 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")

...但据我所知,此方法仅看到从导航事件加载的 DOM。我希望有一种通过访问 DOMDocument 来执行脚本的方法。任何帮助表示赞赏。

谢谢

4

1 回答 1

2

您可以尝试动态注入一个调用您的动态脚本的脚本。这绕过了 .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);
于 2013-03-13T15:39:04.257 回答