十分困惑的问题~~~~高手请进啊! 上面写错一点,那个调用的时候是这样的: LoadJsFile("c:\\test.js");PS:这个问题,应该跟JavaScript的关系大于跟C#的关系吧?所以在这发的帖 ^_^ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我晕 还有一个写错的地方 汗 (这里面的代码,在发帖的时候都是临时改的 ^_^)就是 函数定义第一行,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); } 浏览器不支持这样的载入。你可以做一个测试如果这个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>也就是说浏览器做了安全限制,即:外部网页不能载入本地文件,否则不少网站又可以做坏事了。(完全可以扫描你的硬盘有什么文件) o 是这样啊 太谢谢了!真是醍醐灌顶啊 ^_^不知道老大可有好的解决办法,让外部网页加载本地的js文件?是绝对不允许吗?能不能通过一些其他途径实现这种功能呢?谢谢! 看你的代码可以变通一下: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");} 当然,文件读取完毕应该sr.Close(); 再次 感谢你啊!还有下面的问题:◎ 我现在只是开始试,所以在temp.js里面只有alert一句,实际上应该有很多行代码的;◎ 我写temp.js的目的是想将某外部网页里面众多js代码封装起来,然后通过在C#里面调用temp.js里面的函数,实现特定的功能,所以如果只加载 about:blank 或者 其他网页的话,是不能实现目标的。不知道可有实现的方法?能不能通过什么方法提升JavaScript的权限,让它能加载本地文件? 请推荐javaScript经典书 分享初学JavaScript的好资源 jquery操作table的tr td,并且获得td中的值? Jquery怎么读取XML 匹配的值呢 javascript正则表达式的问题 一个关于window.open()弹出窗口覆盖的问题 修改注册表实现象"卓越"在ie工具栏的快截方式! 请教各位进度条的做法!(100分求教) 怎么样弹出一个没有ie边框、工具栏...滚动条的窗口,不是全屏窗口? javascript的for循环问题 C#windows窗体 这个功能是否能够实现?
就是 函数定义第一行,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);
}
如果这个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>也就是说浏览器做了安全限制,即:外部网页不能载入本地文件,否则不少网站又可以做坏事了。(完全可以扫描你的硬盘有什么文件)
{
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");
}
◎ 我现在只是开始试,所以在temp.js里面只有alert一句,实际上应该有很多行代码的;
◎ 我写temp.js的目的是想将某外部网页里面众多js代码封装起来,然后通过在C#里面调用temp.js里面的函数,实现特定的功能,所以如果只加载 about:blank 或者 其他网页的话,是不能实现目标的。不知道可有实现的方法?能不能通过什么方法提升JavaScript的权限,让它能加载本地文件?