c# webbrowser 无法加载js 本帖最后由 cuihaiyang 于 2011-08-04 10:17:17 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你看下调用js有错没 wb有没有弹出来什么提示会不会是安全级别的限制还有你看下 wb的ObjectForScripting属性 看下有帮助没 1、调用的js是C:\WINDOWS\system32\mshtml.dll中的js,把这段js单独拷出来放在页面中WebBrowser就不会报错了(因为其他原因不能这么实现)2、使用IE7可以正常打开weather1.aspx和weather2.aspx,这应不是浏览器安全级别的限制3、WebBrowser的ObjectForScripting属性是用来让Web页面调用WinForm里的代码,与此处无关 在ie选项中添加信任站点,http://flash.weather.com.cn 为什么不查一查 WebBrowser 封装的是 ie的哪个版本呢 我本机装的是IE7,查了一下好像WebBrowser就是使用了IE的ActiveX控件。 我认为这是IE备受批评的原因,从某些安全性上来说,IE还是做的挺不错的。比如IE中iframe拦截本地cookie,IE在iframe里实现一个security属性。这些特性都是FF没有的。而这里出现了个一个安全问题。在浏览器里,如果直接访问某个swf文件,浏览器会自动加上。比如,直接访问 http://www.fvck.com/svck.swf那么,对于,假设页面源代码为:<embed height="100%" width="100%" name="plugin" src="http://www.fvck.com/svck.swf" type="application/x-shockwave-flash"/>对于,会自动调用res://mshtml.dll/objectembed_neutral.js 来生成页面,页面代码为<html><head><script src="res://mshtml.dll/objectembed_neutral.js"></script></head><body objectSource="http://www.fvck.com/svck.swf" onload="ObjectLoad();" leftmargin=0 topmargin=0 scroll=no> <form id="objectDestination"></form> </body></html>注意到,这两个页面的embed标签里面,都没有设置属性的值。在, allowScriptAccess 默认值是 ,我的flash版本是 9.0.124 ,所以在这里应该也是 sameDomain,就是说,svck.swf可以访问当前html里的js和DOM对象在IE里,认为这样自动化生成的页面是不怎么安全的,所以IE做了一件事情,就是这本来是很好的,但是IE居然存在这样一个bug (存在IE6 /IE7 / IE8 Betas 中):简单的F5刷新页面后:对于Firefox ,则更不堪,从一开始就没有做任何限制那么,如何利用这个特性,或者说是bug?在flash的as 脚本中,直接调用window.location.reload(); 刷新当前页面,就可以访问当前页面的document对象了。在这里,还可以在AS中通过捕获访问docuemnt的异常来判断浏览器是否是IE,也算是一种fingerprint。 您的分析的大致看明白了,您的解决方法是在flash的as脚本中调用window.location.reload(); 来刷新当前页面,但现在我是链接别的网站的flash,没法更改啊。另外我的情况是,flash在IE下可以正常播放,使用WebBrowser控件打开就会出现脚本错误。这样有解决方法吗? 刚尝试了一下,可以正常打开了,上次添加成了https,汗请到http://topic.csdn.net/u/20110804/15/21eb0a0e-a96f-45b7-bfc1-e38889cf8dcf.html 接分 http://blog.csdn.net/wonsoft/article/details/5197015参考这篇文章。重写下WebBrowser 如何向datatable中增加一列 c# 调用 c++.dll HttpWebRequest 自动登录 TreeView问题 C# XmlTextReader怎么读指定的xml节点 请大家及时解决!谢谢 WEB进行的进程问题 C# 修改文件夹名称,怎么能不改变其原来相对位置 C#导出excel时, 怎么在原有导出的基础上,继续添加数据源到同一个sheet中 怎样把float类型数据转换成科学计数法? VS2008灵异事件 截取字符串?求教
会不会是安全级别的限制
还有你看下 wb的ObjectForScripting属性 看下有帮助没
2、使用IE7可以正常打开weather1.aspx和weather2.aspx,这应不是浏览器安全级别的限制
3、WebBrowser的ObjectForScripting属性是用来让Web页面调用WinForm里的代码,与此处无关
而这里出现了个一个安全问题。在浏览器里,如果直接访问某个swf文件,浏览器会自动加上。比如,直接访问 http://www.fvck.com/svck.swf那么,对于,假设页面源代码为:<embed height="100%" width="100%" name="plugin" src="http://www.fvck.com/svck.swf" type="application/x-shockwave-flash"/>
对于,会自动调用res://mshtml.dll/objectembed_neutral.js 来生成页面,页面代码为<html><head><script src="res://mshtml.dll/objectembed_neutral.js"></script></head><body objectSource="http://www.fvck.com/svck.swf" onload="ObjectLoad();" leftmargin=0 topmargin=0 scroll=no> <form id="objectDestination"></form> </body></html>
注意到,这两个页面的embed标签里面,都没有设置属性的值。
在, allowScriptAccess 默认值是 ,我的flash版本是 9.0.124 ,所以在这里应该也是 sameDomain,就是说,svck.swf可以访问当前html里的js和DOM对象
在IE里,认为这样自动化生成的页面是不怎么安全的,所以IE做了一件事情,就是这本来是很好的,但是IE居然存在这样一个bug (存在IE6 /IE7 / IE8 Betas 中):简单的F5刷新页面后:对于Firefox ,则更不堪,从一开始就没有做任何限制那么,如何利用这个特性,或者说是bug?
在flash的as 脚本中,直接调用
window.location.reload();
刷新当前页面,就可以访问当前页面的document对象了。
在这里,还可以在AS中通过捕获访问docuemnt的异常来判断浏览器是否是IE,也算是一种fingerprint。
请到http://topic.csdn.net/u/20110804/15/21eb0a0e-a96f-45b7-bfc1-e38889cf8dcf.html 接分
参考这篇文章。重写下WebBrowser