【问题标题】:.NET 4.0 Web browser control and msIsSiteMode javascript error.NET 4.0 Web 浏览器控件和 msIsSiteMode javascript 错误
【发布时间】:2011-11-05 08:52:34
【问题描述】:

我有一个连接到 www.Jango.com 并使用 Web 浏览器控件的应用程序。但是,在使用 .NET 浏览器控件时,我经常收到“无法获取属性 'msIsSideMode' 的值:对象为空或未定义”的脚本错误,因此无法加载网站的其余部分。

这可以通过创建一个简单的 Windows 窗体应用程序、添加一个 webbrowser 控件并导航到 jango.com 来重现

据我所知,Web 浏览器控件根据您机器上安装的 IE 版本呈现网站。在我的机器上,我安装了 IE9。 msIsSiteMode 方法似乎是一种 IE 方法,它告诉天气当前页面是作为固定站点启动的。由于 jango.com 非常基于 JavaScript,因此此 null 值会导致网站停止正常运行。但是,在 Internet Explorer 中导航到 jango.com 可以正常工作,并且不会产生任何错误。

是否有人知道解决此问题的方法,例如让我的应用程序设置值?让 Web 浏览器控件呈现为不同的版本。任何建议,我都愿意接受,除了更改我机器上的 IE 版本,因为这不是一个选项。

【问题讨论】:

    标签: c# javascript .net webbrowser-control


    【解决方案1】:

    在 WebBrowser 控件上将 ScriptErrorsSuppressed 属性设置为 True。

    编辑:另一种选择

    在承载 Web 用户控件的表单上试试这个:

    using System.Runtime.InteropServices;
    using System.Security.Permissions;
    
    [ComVisibleAttribute(true)]
    [PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            webBrowser1.ObjectForScripting = this;
    
        }
    ...
    }
    

    Read here 了解更多详细信息。

    【讨论】:

    • 这将抑制它,因此它不会显示,但是由于此错误,该站点仍然无法运行。换句话说,无论我是否抑制它,错误仍在发生。
    • @Sam Plus Plus:检查我的编辑。我在我的计算机上进行了测试,没有抑制 WebBrowserControl 中的错误,并且我不再收到 msIsSiteMode() 调用的问题。还要检查这个:stackoverflow.com/questions/305915/…
    • 我最终也尝试了这个,并且我也能够解决这个问题。但是我最终遇到了其他问题,并最终改用了基于 Gecko 的 Web 浏览器控件。你是对的,虽然这回答了我的问题。
    【解决方案2】:

    我在我的机器上安装了 IE9 的 WebBrower Control 中看到了类似的问题。就我而言,我有两个带有 WebBrowser 控件的窗体。其中一个用于从另一个加载弹出窗口。我在弹出窗口中收到脚本错误。它仅适用于 IE9

    【讨论】:

      猜你喜欢
      • 2013-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      相关资源
      最近更新 更多