用VS控件WebBrowser浏览某些网页,其效果与直接用IE有较大差别,例如 http://dl.dbank.com/c0wtze2ttu。
IE里,点击‘转存网盘’按钮,会弹出一个对话框。
在WebBrowser里,却没有任何反应或动作。
WebBrowser是直接拖到WinForm里的,没有做任何设置的改动。
WebBrowser调用的应该是IE底层,但为什么效果不一致呢?
请问如何处理,使WebBrowser能与IE的行为一致?
很多人上来就回复说一致啊。。。请亲自试验一下。
24 个解决方案
#1
据我的理解,WebBrowser是对IE的功能做了大量精简,所以肯定不会完全一致。
#2
WebBrowser可能跟ie并不一致,楼主试着修改下设置 再试下
#3
内核问题。内核问题。
#4
有什么实际的解决方法?
#5
您好,我刚用2.0的环境测试了下,没有任何设置,发现除了弹出几个脚本错误外,弹出框还是正常显示,你是不是设置了什么,禁用了弹出框?
#6
我刚用2.0试了一下,与4.0问题一致,还是不能弹出对话框。
编程上,一个WinForm上直接拖拽一个WebBrowser和一个Button,点击按钮执行以下操作:
private void button1_Click(object sender, EventArgs e)
{
webBrowser1.Navigate("http://pan.baidu.com/share/link?shareid=94975&uk=673798325");
//webBrowser1.Navigate("http://dl.dbank.com/c0wtze2ttu");
}
没有其他任何代码,也没有任何对WebBrowser的设置。
#7
试试这个网址:
http://pan.baidu.com/share/link?shareid=94975&uk=673798325
#8
进一步的结论是:
WebBrowser执行js脚本会出错,但IE不会出错。
WebBrowser执行js脚本会出错,但IE不会出错。
#9
不一致很正常。。
#10
呵呵呵。。。。
WebBrowser仅仅是个控件而已。
IE是个产品,产品啊,你明白么,产品!!!!!。
两者怎可同日而语呢?
WebBrowser仅仅是个控件而已。
IE是个产品,产品啊,你明白么,产品!!!!!。
两者怎可同日而语呢?
#11
你换一下火狐看一下,他应该比ie好。
#12
是应该会有不同,但应该是上层功能的多少而已,基本的浏览还是要支持的啊。
如果WebBrowser就是这样,那大多数做类似开发的人就哭憋了,不得不寻找其他途径?
WebBrowser其实应该是对IE底层COM的再包装,浏览行为应该一致啊。
出现这种问题让人哀叹。不知道有没有解决办法。
#13
其他浏览器暂不在考虑范围,是因为没接触过,一点不会。
#14
webbrowser 的工作机制非常奇怪
如果你本机安装的是 ie6,则 webbrowser 也使用 ie6 的内核
否则。。。。。。。。。。。 webbrowser 使用 ie7 的内核
所以,很可能是因为你本机安装的 ie9,但是 webbrowser还是使用 ie7 的原因
如果你本机安装的是 ie6,则 webbrowser 也使用 ie6 的内核
否则。。。。。。。。。。。 webbrowser 使用 ie7 的内核
所以,很可能是因为你本机安装的 ie9,但是 webbrowser还是使用 ie7 的原因
#15
我是说你用火狐的打开看一下,他是不是跟你想要的效果是一样的。
#16
装的IE9吧?
我以前遇到过。
系统的其他应用程序默认以IE7方式渲染。
可以通过修改注册表方式,设置自己的应用程序的IE渲染(版本)方式。
参考: http://www.cnblogs.com/liuzhendong/archive/2012/03/21/2410107.html
我以前遇到过。
系统的其他应用程序默认以IE7方式渲染。
可以通过修改注册表方式,设置自己的应用程序的IE渲染(版本)方式。
参考: http://www.cnblogs.com/liuzhendong/archive/2012/03/21/2410107.html
#17
本机装的是IE8.
WebBrowser默认的行为是IE7兼容模式,即使本机装了IE8. 试过某种强制WebBrowser使用IE8的方式,但没有效果。
#18
我本机装的是IE8 32位版本。
试着写了个函数,也成功在注册表中设置,但还是没有作用啊。请看看代码哪里出了问题?
private void RegWebBrowserIn32BitIE8Mode()
{
RegistryKey key = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION");
key.SetValue(Path.GetFileName(Application.ExecutablePath), 8000, RegistryValueKind.DWord);
key.Close();
}
#19
UP!!!!!!
#20
设置的数值也是有关系的。
比如IE9
设置为9999,则所有页面都会以IE9渲染。
设置为9000,只有页面头部有 <!DOCTYPE directives 这样标记的才会使用IE9渲染;其他的页面还是默认方式。
比如IE9
设置为9999,则所有页面都会以IE9渲染。
设置为9000,只有页面头部有 <!DOCTYPE directives 这样标记的才会使用IE9渲染;其他的页面还是默认方式。
#21
顶啊 我也是,用IE打开JS调用一切正常,在WEBBROWSER里打开就一片,还会提示JS错误
#22
----------------------
按照你说的试了下 无任何问题,弹出框也出来了、
#23
另 JS错误是很正常的了,webbrowser是控件半成品,所以不奇怪。
IE是成品,封装了包括webbrowser在内的多层架构控件和DLL。
IE是成品,封装了包括webbrowser在内的多层架构控件和DLL。
#24
建议逆一下360se3,你会看到一大堆注册表相关设置,直接抄过来吧
#1
据我的理解,WebBrowser是对IE的功能做了大量精简,所以肯定不会完全一致。
#2
WebBrowser可能跟ie并不一致,楼主试着修改下设置 再试下
#3
内核问题。内核问题。
#4
有什么实际的解决方法?
#5
您好,我刚用2.0的环境测试了下,没有任何设置,发现除了弹出几个脚本错误外,弹出框还是正常显示,你是不是设置了什么,禁用了弹出框?
#6
我刚用2.0试了一下,与4.0问题一致,还是不能弹出对话框。
编程上,一个WinForm上直接拖拽一个WebBrowser和一个Button,点击按钮执行以下操作:
private void button1_Click(object sender, EventArgs e)
{
webBrowser1.Navigate("http://pan.baidu.com/share/link?shareid=94975&uk=673798325");
//webBrowser1.Navigate("http://dl.dbank.com/c0wtze2ttu");
}
没有其他任何代码,也没有任何对WebBrowser的设置。
#7
试试这个网址:
http://pan.baidu.com/share/link?shareid=94975&uk=673798325
#8
进一步的结论是:
WebBrowser执行js脚本会出错,但IE不会出错。
WebBrowser执行js脚本会出错,但IE不会出错。
#9
不一致很正常。。
#10
呵呵呵。。。。
WebBrowser仅仅是个控件而已。
IE是个产品,产品啊,你明白么,产品!!!!!。
两者怎可同日而语呢?
WebBrowser仅仅是个控件而已。
IE是个产品,产品啊,你明白么,产品!!!!!。
两者怎可同日而语呢?
#11
你换一下火狐看一下,他应该比ie好。
#12
是应该会有不同,但应该是上层功能的多少而已,基本的浏览还是要支持的啊。
如果WebBrowser就是这样,那大多数做类似开发的人就哭憋了,不得不寻找其他途径?
WebBrowser其实应该是对IE底层COM的再包装,浏览行为应该一致啊。
出现这种问题让人哀叹。不知道有没有解决办法。
#13
其他浏览器暂不在考虑范围,是因为没接触过,一点不会。
#14
webbrowser 的工作机制非常奇怪
如果你本机安装的是 ie6,则 webbrowser 也使用 ie6 的内核
否则。。。。。。。。。。。 webbrowser 使用 ie7 的内核
所以,很可能是因为你本机安装的 ie9,但是 webbrowser还是使用 ie7 的原因
如果你本机安装的是 ie6,则 webbrowser 也使用 ie6 的内核
否则。。。。。。。。。。。 webbrowser 使用 ie7 的内核
所以,很可能是因为你本机安装的 ie9,但是 webbrowser还是使用 ie7 的原因
#15
我是说你用火狐的打开看一下,他是不是跟你想要的效果是一样的。
#16
装的IE9吧?
我以前遇到过。
系统的其他应用程序默认以IE7方式渲染。
可以通过修改注册表方式,设置自己的应用程序的IE渲染(版本)方式。
参考: http://www.cnblogs.com/liuzhendong/archive/2012/03/21/2410107.html
我以前遇到过。
系统的其他应用程序默认以IE7方式渲染。
可以通过修改注册表方式,设置自己的应用程序的IE渲染(版本)方式。
参考: http://www.cnblogs.com/liuzhendong/archive/2012/03/21/2410107.html
#17
本机装的是IE8.
WebBrowser默认的行为是IE7兼容模式,即使本机装了IE8. 试过某种强制WebBrowser使用IE8的方式,但没有效果。
#18
我本机装的是IE8 32位版本。
试着写了个函数,也成功在注册表中设置,但还是没有作用啊。请看看代码哪里出了问题?
private void RegWebBrowserIn32BitIE8Mode()
{
RegistryKey key = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION");
key.SetValue(Path.GetFileName(Application.ExecutablePath), 8000, RegistryValueKind.DWord);
key.Close();
}
#19
UP!!!!!!
#20
设置的数值也是有关系的。
比如IE9
设置为9999,则所有页面都会以IE9渲染。
设置为9000,只有页面头部有 <!DOCTYPE directives 这样标记的才会使用IE9渲染;其他的页面还是默认方式。
比如IE9
设置为9999,则所有页面都会以IE9渲染。
设置为9000,只有页面头部有 <!DOCTYPE directives 这样标记的才会使用IE9渲染;其他的页面还是默认方式。
#21
顶啊 我也是,用IE打开JS调用一切正常,在WEBBROWSER里打开就一片,还会提示JS错误
#22
----------------------
按照你说的试了下 无任何问题,弹出框也出来了、
#23
另 JS错误是很正常的了,webbrowser是控件半成品,所以不奇怪。
IE是成品,封装了包括webbrowser在内的多层架构控件和DLL。
IE是成品,封装了包括webbrowser在内的多层架构控件和DLL。
#24
建议逆一下360se3,你会看到一大堆注册表相关设置,直接抄过来吧