我正在加载包含以下代码的第三方网页
<script type="text/javascript">
onDomReady(function() { some_code1; });
</script>
进入 WebBrowser 组件。后some_code1
已经执行了,我需要对 Dom 进行一些操作,这将使some_code1
无效的。问题是如何确定some_code1
被处决了吗?
我做不到
private void web_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
DoRequiredManipulations();
}
既然这个事件会发生before some_code1
已执行并将使其无效。
我也做不到
private void web_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
web.Document.InvokeScript("doSome_code1");
DoRequiredManipulations();
}
Since some_code1
被声明为匿名函数。
看来唯一的方法是这样的:
private void web_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
var script = GetScriptText(web.DocumentText);
//execute script in webbrowser
DoRequiredManipulations();
}
问题是我不知道如何在网络浏览器中执行这个脚本。我曾尝试过web.Navigate("javascript: " + script);
但它不能正常工作。
我找到了如何做到这一点:
HtmlElement scriptEl = web.Document.CreateElement("script");
(scriptEl.DomElement as IHTMLScriptElement).text = "function myscript() { " + script.Text + " }";
web.Document.GetElementsByTagName("head")[0].AppendChild(scriptEl);
web.Document.InvokeScript("myscript");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)