严重 - 在尝试回答之前一直阅读问题。“使用其他浏览器”不回答此问题。
问题是:当我无法控制传入页面时,如何获取System.Windows.Forms.WebBrowser控件以显示嵌入了Javascript的网页? 我已经看到人们建议为IE模拟添加注册表值(Allowing javascript to run on a windows form web browser)并更改Internet选项/安全性中的脚本设置。
我已经完成了。
所以,这是测试 - 使用System.Windows.Forms.WebBrowser控件访问www.hulu.com。
我们仍然得到这个。
还有其他想法吗?
答案 0 :(得分:7)
将ScriptErrorsSuppressed
控件的属性WebBrowser
设置为true
以禁止显示JavaScript错误消息。
为了允许hulu.com上的代码执行,您必须以一种模式运行Webbrowser控件,使其以较新的版本功能运行。这只能通过设置注册表项来完成。
有关详细信息,请参阅this question and the answers。
要指定:我有一个演示应用程序,用名为WindowsFormsApplication5.exe的嵌入式WebBrowser控件打开hulu网站。
如果没有注册表更改,我会看到Hulu的一条说明,即未启用JavaScript支持。当用Fiddler嗅探网络传输时,我看到以下请求被发送到Hulu服务器:
GET http://www.hulu.com/ HTTP/1.1
Accept: image/gif, image/jpeg, image/pjpeg, application/x-ms-application, application/xaml+xml, application/x-ms-xbap, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*
Accept-Language: de-DE,de;q=0.5
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.2; WOW64; Trident/7.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729; Creative AutoUpdate v1.41.09)
Host: www.hulu.com
Connection: Keep-Alive
Pragma: no-cache
请注意版本号" 7.0"在User-Agent字符串中。
我现在添加一个REG_DWORD类型的注册表项,名称为" WindowsFormsApplication5.exe" HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_BROWSER_EMULATION中的值和值0x00002af9(11001)。
因此,Hulu网站在我的演示应用程序中成功显示,我看到以下请求通过Fiddler发送:
GET http://www.hulu.com/ HTTP/1.1
Accept: image/gif, image/jpeg, image/pjpeg, application/x-ms-application, application/xaml+xml, application/x-ms-xbap, application/vnd.ms-powerpoint, application/vnd.ms-excel, application/msword, */*
Referer: http://www.hulu.com/
Accept-Language: de-DE,de;q=0.5
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64; Trident/7.0; rv:11.0) like Gecko
Host: www.hulu.com
Connection: Keep-Alive
注意注册表更改后的不同User-Agent字符串。
答案 1 :(得分:-1)
可能的方法:
使用其他浏览器。 Replacing .NET WebBrowser control with a better browser, like Chrome?
当您的程序启动时,请检查注册表以查看IE是否配置为允许Javascript。如果不是,请停止程序或修改注册表。 (这可能会给用户或管理员带来许多瑕疵!)