none
C# WebBrowser控件与IE的效果不一致啊。。。怎么办? RRS feed

  • 问题

  • VS2010 .NET4.0 C# WinForm WebBrowser

    用C#控件WebBrowser浏览某些网页,其效果与直接用IE有较大差别,例如 http://dl.dbank.com/c0wtze2ttu。
    IE里,点击‘转存网盘’按钮,会弹出一个对话框。
    在WebBrowser里,却没有任何反应或动作。

    WebBrowser是直接拖到WinForm里的,没有做任何设置的改动。

    WebBrowser调用的应该是IE底层,但为什么效果不一致呢?
    请问如何处理,使WebBrowser能与IE的行为一致?
    • 已移动 Mike FengModerator 2012年12月18日 9:49 (发件人:.NET Framework 一般性问题讨论区)
    2012年12月17日 9:20

答案

  • 把 ScriptErrorsSuppressed 可以忽略掉这个错误。但是点击后,是不会出现认证对话框的。

    你可以写一个简单的JS弹出对话框来测试下,BAIDU的这个认证对话框是否有些特别的地方。

    2012年12月21日 5:59

全部回复

  • 在WebBrowser中出现以下错误,但在IE8中则没有错误。

    2012年12月17日 10:14
  • 应该是使用的IE内核不一致吧。另外你看看是否启用了“兼容模式”。
    2012年12月18日 2:11
  • 使用以下设置,但没有作用。

            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();
            }

    也可用以下网址测试:

    http://pan.baidu.com/share/link?shareid=94975&uk=673798325

    在WebBrowser中会报错(见上图),但在IE8中不会报错。

    如何使WebBrowser的行为与IE一致啊?

    2012年12月18日 7:02
  • 应该是使用的IE内核不一致吧。另外你看看是否启用了“兼容模式”。

    如何设置兼容模式?

    2012年12月18日 7:02
  • 如何设置兼容模式?


    打开IE9,注意设置红色圈圈部分。

    我的博客园
    慈善点击,点击此处
    和谐拯救危机,全集下载,净化人心

    2012年12月18日 7:10
    版主
  • 如何设置兼容模式?


    打开IE9,注意设置红色圈圈部分。

    我的博客园
    慈善点击,点击此处
    和谐拯救危机,全集下载,净化人心

    我想应该不是设置IE的兼容模式(目前我用IE8),而是要设置WebBrowser的兼容模式吧,因为是用WebBrowser编程。

    根据从网上搜索的信息,编制了RegWebBrowserIn32BitIE8Mode这个函数(见前面回复),但并没有起到想要的作用。

    2012年12月19日 3:15
  • 你好!

         WinForm那个控件已经很久没有更新过了,它使用的内核应该是IE6的,所以效果和现在的Ie肯定是不一样的。


    周雪峰

    2012年12月19日 13:59
    版主
  • 你好!

         WinForm那个控件已经很久没有更新过了,它使用的内核应该是IE6的,所以效果和现在的Ie肯定是不一样的。


    周雪峰

    从网上很多信息得到这样一个说法:

    WebBrowser调用的就是本机安装的IE内核,但会默认以IE7兼容模式运行。

    通过修改注册表可以强制WebBrowser以与本机安装的IE相同的模式运行。

    我试了一下,例如RegWebBrowserIn32BitIE8Mode这个函数(见前面回复),但并没有起到想要的作用。

    哪里出了问题?

    2012年12月20日 7:26
  • 哪里出了问题的话,就需要你自己调试下,找到你的 webBrowser 引用的IE的版本号,可以通过查找引用的dll来实现。
    2012年12月20日 7:39
  • 哪里出了问题的话,就需要你自己调试下,找到你的 webBrowser 引用的IE的版本号,可以通过查找引用的dll来实现。

    本机只安装了一个IE8,WebBrowser引用的应该就是IE8吧。

    如果不是,需要某种方法强制WebBrowser引用本机的IE8。就是不知道怎么实现啊。

    2012年12月21日 4:41
  • 把 ScriptErrorsSuppressed 可以忽略掉这个错误。但是点击后,是不会出现认证对话框的。

    你可以写一个简单的JS弹出对话框来测试下,BAIDU的这个认证对话框是否有些特别的地方。

    2012年12月21日 5:59