允许 System.Windows.Forms.WebBrowser 到 运行 javascript
Allow System.Windows.Forms.WebBrowser to run javascript
说真的 - 在尝试回答之前通读问题。 "Use a different browser" 没有回答这个问题。
问题是这样的:当我无法控制传入页面时,如何让 System.Windows.Forms.WebBrowser 控件显示嵌入了 Javascript 的网页?
我已经看到有人建议为 IE 仿真添加注册表值 (Allowing javascript to run on a windows form web browser) 并更改 Internet 中的脚本设置 Options/Security。
我已经这样做了。
所以,这是测试 - 使用 System.Windows.Forms.WebBrowser 控件访问 www.hulu.com。
而且我们仍然得到这个。
还有其他想法吗?
将 WebBrowser
控件的 属性 ScriptErrorsSuppressed
设置为 true
以抑制 JavaScript 错误消息。
为了允许 hulu.com 上的代码执行,您必须 运行 Web浏览器控件的模式使其 运行 具有较新版本的功能。这只能通过设置注册表项来完成。
详情见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”。
我现在在 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 字符串。
可能的方法:
使用不同的浏览器。 Replacing .NET WebBrowser control with a better browser, like Chrome?
当您的程序启动时,检查注册表以查看 IE 是否配置为允许 Javascript。如果不是,请停止程序或修改注册表。 (这可能会激怒用户或管理员!)
仅在顶部添加此行
this.webBrowser1.ScriptErrorsSuppressed = true;
说真的 - 在尝试回答之前通读问题。 "Use a different browser" 没有回答这个问题。
问题是这样的:当我无法控制传入页面时,如何让 System.Windows.Forms.WebBrowser 控件显示嵌入了 Javascript 的网页?
我已经看到有人建议为 IE 仿真添加注册表值 (Allowing javascript to run on a windows form web browser) 并更改 Internet 中的脚本设置 Options/Security。
我已经这样做了。
所以,这是测试 - 使用 System.Windows.Forms.WebBrowser 控件访问 www.hulu.com。
而且我们仍然得到这个。
还有其他想法吗?
将 WebBrowser
控件的 属性 ScriptErrorsSuppressed
设置为 true
以抑制 JavaScript 错误消息。
为了允许 hulu.com 上的代码执行,您必须 运行 Web浏览器控件的模式使其 运行 具有较新版本的功能。这只能通过设置注册表项来完成。
详情见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”。
我现在在 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 字符串。
可能的方法:
使用不同的浏览器。 Replacing .NET WebBrowser control with a better browser, like Chrome?
当您的程序启动时,检查注册表以查看 IE 是否配置为允许 Javascript。如果不是,请停止程序或修改注册表。 (这可能会激怒用户或管理员!)
仅在顶部添加此行
this.webBrowser1.ScriptErrorsSuppressed = true;