【问题标题】:Internet Explorer 11 gives script error in PageRequestManager.jsInternet Explorer 11 在 PageRequestManager.js 中出现脚本错误
【发布时间】:2023-03-02 23:51:01
【问题描述】:

我在服务器上使用 ASP.NET 4.5,并且我有一个带有 Web 浏览器控件的 .NET Windows 应用程序,可以导航到服务器上的网页。

如果我在使用 Internet Explorer 11 的系统上运行 Windows 应用程序,我会在导航到另一个页面时收到脚本错误:“对象不支持属性或方法 'attachEvent'”。脚本文件是 ScriptResource.axd,所以它不是我的任何脚本。

我知道 Internet Explorer 11 不再支持 attachEvent(替换为 attachEventListener?)。然而,这在这里没有多大帮助,因为 javascript 是框架的一部分,而不是在我的代码中。

我在这里找到了框架的 javascript 源代码: http://ajaxcontroltoolkit.codeplex.com/SourceControl/latest#Client/MicrosoftAjax/Extensions/Sys/WebForms/PageRequestManager.js

// DevDiv Bugs 100201: IE does not set referrer header on redirect if you set window.location, inject anchor node instead
// dynamic anchor technique only works on IE
if (Sys.Browser.agent === Sys.Browser.InternetExplorer) {
    var anchor = document.createElement("a");
    anchor.style.display = 'none';
    // cancel bubble so body.onclick is not raised
     anchor.attachEvent("onclick", cancelBubble);
    // more code...
}

据我所知,这是 Sys.Webforms.PageRequestManager 模块,它是核心 ASP.NET 框架的一部分。

执行 attachEvent 的行在 Internet Explorer 11 上会出现脚本错误,但在旧版本的 Internet Explorer 上效果很好。

如何解决这个问题?是否有任何已知的解决方法?我无法对此进行任何更新。

【问题讨论】:

    标签: asp.net .net asp.net-ajax internet-explorer-11


    【解决方案1】:

    尝试强制浏览器以 IE 10 模式呈现...

    <meta http-equiv="X-UA-Compatible" content="IE=10" />
    

    【讨论】:

    • 谢谢,这个解决方法很好用。但我们希望 Sys.Webforms.PageRequestManager 的框架代码在未来版本中得到更正以支持 IE 11。
    • 另一种解决方法是简单地修补 ajaxcontroltoolkit 代码,因为代码是开源的。但是,您必须维护该代码的单独分支,我不建议这样做...
    【解决方案2】:

    我在使用 jQuery 1.10 时遇到了这个问题,似乎 IE11 缺乏对 jQuery 中使用的“attachEvent”的支持,并且您的框架似乎也使用了它。有一个 Microsoft bugticket:Bugticket attachEvent IE11

    我在related jQuery bugticket 中找到了解决方案。只需在您的框架之前插入以下代码:

    var isIE11 = !!(navigator.userAgent.match(/Trident/) && !navigator.userAgent.match(/MSIE/)); 
    if (isIE11) {
        if (typeof window.attachEvent == "undefined" || !window.attachEvent) {
            window.attachEvent = window.addEventListener;
        }
    } 
    

    你先检查浏览器是不是IE11,然后再绑定attachEvent监听,这样就不会再出现错误了。

    【讨论】:

      猜你喜欢
      • 2020-09-11
      • 1970-01-01
      • 2014-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多