上面写错一点,那个调用的时候是这样的: 
        LoadJsFile("c:\\test.js");PS:这个问题,应该跟JavaScript的关系大于跟C#的关系吧?所以在这发的帖 ^_^

解决方案 »

  1.   

    我晕 还有一个写错的地方 汗  (这里面的代码,在发帖的时候都是临时改的 ^_^)
    就是 函数定义第一行,wB->browser    private void LoadJsFile(string jsFile)
        {
            HtmlElement head = browser.Document.GetElementsByTagName("head")[0];
            HtmlElement script = browser.Document.CreateElement("script");
            script.SetAttribute("type","text/javascript");
            script.SetAttribute("src", jsFile);
            script.SetAttribute("charset","utf-8");
            head.AppendChild(script);
        }
      

  2.   

    浏览器不支持这样的载入。你可以做一个测试
    如果这个html文件直接打开则可以载入temp.js --C:\Inetpub\wwwroot\test.html
    如果这个html文件通过http打开则不能载入temp.js --http://localhost/test.html
    <html>
    <body>
    <script type="text/javascript" src="file:///d|/temp/temp.js"></script>
    </body>
    </html>也就是说浏览器做了安全限制,即:外部网页不能载入本地文件,否则不少网站又可以做坏事了。(完全可以扫描你的硬盘有什么文件)
      

  3.   

    o 是这样啊 太谢谢了!真是醍醐灌顶啊 ^_^不知道老大可有好的解决办法,让外部网页加载本地的js文件?是绝对不允许吗?能不能通过一些其他途径实现这种功能呢?谢谢!
      

  4.   

    看你的代码可以变通一下:private void LoadJsFile(string jsFile)
    {
        StreamReader sr = new StreamReader(jsFile, Encoding.Default);
        wB.Navigate("javascript:" + sr.ReadToEnd());
    }private void button1_Click(object sender, EventArgs e)
    {
        LoadJsFile(@"d:\temp\temp.js");
    }private void Form1_Load(object sender, EventArgs e)
    {
        wB.Navigate("about:blank");
    }
      

  5.   

    当然,文件读取完毕应该sr.Close();
      

  6.   

    再次 感谢你啊!还有下面的问题:
    ◎ 我现在只是开始试,所以在temp.js里面只有alert一句,实际上应该有很多行代码的;
    ◎ 我写temp.js的目的是想将某外部网页里面众多js代码封装起来,然后通过在C#里面调用temp.js里面的函数,实现特定的功能,所以如果只加载 about:blank 或者 其他网页的话,是不能实现目标的。不知道可有实现的方法?能不能通过什么方法提升JavaScript的权限,让它能加载本地文件?