WebBrowser在网页加载JS文件的时候,如何去修改这个JS文件呢?
比如我有页面a.aspx时里面有加载my.js文件
我如何在WebBrowser加载my.js而还没有在a.aspx执行这些JS的时候
把里面的一句:alert("哈哈")
改为:alert("被我改了")?
万分感谢
[解决办法]
你可以在WebBrowser控件中注入脚本,替换原来脚本的一些方法
(1) 添加 Microsoft.mshtml.dll 引用
(2) 添加代码如下:
private void Form1_Load(object sender, EventArgs e)
{
webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
}
void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
var htmlDoc = (IHTMLDocument3)webBrowser1.Document.DomDocument;
HTMLHeadElement head = htmlDoc.getElementsByTagName("head").Cast<HTMLHeadElement>().First();
var script = (IHTMLScriptElement)((IHTMLDocument2)htmlDoc).createElement("script");
script.text = "window.onload=function() { alert('test') }";
head.appendChild((IHTMLDOMNode)script);
}
private void button1_Click(object sender, EventArgs e)
{
webBrowser1.Navigate("http://www.hao123.com");
}private void Form1_Load(object sender, EventArgs e)
{
webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
}
void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
var htmlDoc = (IHTMLDocument3)webBrowser1.Document.DomDocument;
HTMLHeadElement head = htmlDoc.getElementsByTagName("head").Cast<HTMLHeadElement>().First();
var script = (IHTMLScriptElement)((IHTMLDocument2)htmlDoc).createElement("script");
script.text = "window.onload=function() { alert('test') }";
head.appendChild((IHTMLDOMNode)script);
}
private void button1_Click(object sender, EventArgs e)
{
webBrowser1.Navigate("http://www.hao123.com");
}