WebBrowser控件与IE的效果不一致啊。。。怎么办?
VS2010 .NET4.0 C# WinForm WebBrowser用VS控件WebBrowser浏览某些网页,其效果与直接用IE有较大差别,例如 http://dl.dbank.com/c0wtze2ttu。
IE里,点击‘转存网盘’按钮,会弹出一个对话框。
在WebBrowser里,却没有任何反应或动作。
WebBrowser是直接拖到WinForm里的,没有做任何设置的改动。
WebBrowser调用的应该是IE底层,但为什么效果不一致呢?
请问如何处理,使WebBrowser能与IE的行为一致?
很多人上来就回复说一致啊。。。请亲自试验一下。 --------------------编程问答-------------------- 据我的理解,WebBrowser是对IE的功能做了大量精简,所以肯定不会完全一致。 --------------------编程问答-------------------- WebBrowser可能跟ie并不一致,楼主试着修改下设置 再试下 --------------------编程问答-------------------- 内核问题。内核问题。 --------------------编程问答--------------------
有什么实际的解决方法?
--------------------编程问答-------------------- 您好,我刚用2.0的环境测试了下,没有任何设置,发现除了弹出几个脚本错误外,弹出框还是正常显示,你是不是设置了什么,禁用了弹出框? --------------------编程问答--------------------
我刚用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的设置。
--------------------编程问答--------------------
试试这个网址:
http://pan.baidu.com/share/link?shareid=94975&uk=673798325
--------------------编程问答-------------------- 进一步的结论是:
WebBrowser执行js脚本会出错,但IE不会出错。
--------------------编程问答-------------------- 不一致很正常。。 --------------------编程问答-------------------- 呵呵呵。。。。
WebBrowser仅仅是个控件而已。
IE是个产品,产品啊,你明白么,产品!!!!!。
两者怎可同日而语呢?
--------------------编程问答-------------------- 你换一下火狐看一下,他应该比ie好。 --------------------编程问答--------------------
是应该会有不同,但应该是上层功能的多少而已,基本的浏览还是要支持的啊。
如果WebBrowser就是这样,那大多数做类似开发的人就哭憋了,不得不寻找其他途径?
WebBrowser其实应该是对IE底层COM的再包装,浏览行为应该一致啊。
出现这种问题让人哀叹。不知道有没有解决办法。
--------------------编程问答--------------------
其他浏览器暂不在考虑范围,是因为没接触过,一点不会。 --------------------编程问答-------------------- webbrowser 的工作机制非常奇怪
如果你本机安装的是 ie6,则 webbrowser 也使用 ie6 的内核
否则。。。。。。。。。。。 webbrowser 使用 ie7 的内核
所以,很可能是因为你本机安装的 ie9,但是 webbrowser还是使用 ie7 的原因 --------------------编程问答--------------------
我是说你用火狐的打开看一下,他是不是跟你想要的效果是一样的。 --------------------编程问答-------------------- 装的IE9吧?
我以前遇到过。
系统的其他应用程序默认以IE7方式渲染。
可以通过修改注册表方式,设置自己的应用程序的IE渲染(版本)方式。
参考:http://www.cnblogs.com/liuzhendong/archive/2012/03/21/2410107.html
--------------------编程问答--------------------
本机装的是IE8.
WebBrowser默认的行为是IE7兼容模式,即使本机装了IE8. 试过某种强制WebBrowser使用IE8的方式,但没有效果。 --------------------编程问答--------------------
我本机装的是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();
}
--------------------编程问答-------------------- UP!!!!!! --------------------编程问答-------------------- 设置的数值也是有关系的。
比如IE9
设置为9999,则所有页面都会以IE9渲染。
设置为9000,只有页面头部有 <!DOCTYPE directives 这样标记的才会使用IE9渲染;其他的页面还是默认方式。 --------------------编程问答-------------------- 顶啊 我也是,用IE打开JS调用一切正常,在WEBBROWSER里打开就一片,还会提示JS错误 --------------------编程问答--------------------
----------------------
按照你说的试了下 无任何问题,弹出框也出来了、 --------------------编程问答-------------------- 另 JS错误是很正常的了,webbrowser是控件半成品,所以不奇怪。
IE是成品,封装了包括webbrowser在内的多层架构控件和DLL。 --------------------编程问答-------------------- 建议逆一下360se3,你会看到一大堆注册表相关设置,直接抄过来吧
补充:.NET技术 , C#