允许System.Windows.Forms.WebBrowser运行javascript

认真地 – 在尝试回答之前一直阅读问题。 “使用其他浏览器”不回答这个问题。

问题是: 当我无法控制传入页面时,如何获取System.Windows.Forms.WebBrowser控件以显示嵌入了Javascript的网页? 我已经看到人们建议为IE模拟添加注册表值( 允许javascript在Windows窗体Web浏览器上运行 )并更改Internet选项/安全性中的脚本设置。 互联网安全选项

我已经这样做了

所以,这是测试 – 使用System.Windows.Forms.WebBrowser控件访问www.hulu.com。
仍然得到这个

我们仍然得到这个。

还有其他想法吗?

WebBrowser控件的属性ScriptErrorsSuppressed设置为true以禁止JavaScript错误消息。


为了允许hulu.com上的代码执行,您必须以一种模式运行Webbrowser控件,使其以较新的版本function运行。 这只能通过设置注册表项来完成。

有关详细信息,请参阅此问题和答案 。


要指定:我有一个演示应用程序,用于打开名为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 

请注意User-Agent字符串中的版本号“7.0”。

我现在在HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_BROWSER_EMULATION中添加一个REG_DWORD类型的注册表项,名称为“WindowsFormsApplication5.exe”,值为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字符串。


注册表设置在演示应用程序中的WebBrowser控件中使用IE 11

在注册表更改后显示Hulu网站的演示应用程序

可能的方法:

  • 使用其他浏览器。 用更好的浏览器替换.NET WebBrowser控件,比如Chrome?

  • 程序启动时,请检查注册表以查看IE是否配置为允许Javascript。 如果不是,请停止程序或修改注册表。 (这可能会给用户或管理员带来很多羽毛!)