在C# WebBrowser控件插入JS代码,并执行!
在C# WebBrowser控件插入JS代码,并执行!
HtmlElement script = webBrowser.Document.CreateElement("script"); script.SetAttribute("type", "text/javascript"); script.SetAttribute("text", "function _func(){alert('OK')}"); HtmlElement head = webBrowser.Document.Body.AppendChild(script); webBrowser.Document.InvokeScript("_func");
WPF的WebBrowser和WinForm的WebBrowser有一定区别。
要向其中注入javascript脚本,经过本人试验,下面一条路可以走通:
mshtml.HTMLDocument htmlDoc = Browser.Document as mshtml.HTMLDocument; var head = htmlDoc.getElementsByTagName("head").Cast<HTMLHeadElement>().First(); var script = (IHTMLScriptElement)htmlDoc.createElement("script"); script.text ="alert('hello world')"; head.appendChild((IHTMLDOMNode)script);
该方法还可以注入javascript函数,在需要的时候调用 Browser.InvokeScript()即可。
但是今天发现一个很奇怪问题。。我用该注入方法修改 document.body.style.zoom,整个页面会缩放,但是其中的flash等控件居然有问题。。
然后我用IE8带的开发人员工具注入修改 document.body.style.zoom 则没这个问题。。。