比如我有页面a.aspx时里面有加载my.js文件
我如何在WebBrowser加载my.js而还没有在a.aspx执行这些JS的时候
把里面的一句:alert("哈哈")
改为:alert("被我改了")?万分感谢

解决方案 »

  1.   

    你可以在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");  
    }  
      

  2.   

    楼住貌似需要的是替换js文件内容,不是插入js.DocumentCompleted 事件里判断路径,替换js内容应该就可以了.或者在调用这个js的网页完成处加入判断,把js文件地址换成本地.