2013-11-12 3 views
5

Я использую ASP.NET 4.5 на сервере, и у меня есть приложение .NET Windows с элементом управления веб-браузера, который перемещается на веб-страницу на сервере.Internet Explorer 11 дает ошибку скрипта в PageRequestManager.js

Если я запускаю приложение Windows в системе с Internet Explorer 11, я получаю ошибку сценария: «Объект не поддерживает свойство или метод« attachEvent »при переходе на другую страницу. Файл сценария - ScriptResource.axd, поэтому он не является одним из моих скриптов.

Я действительно знаю, что Internet Explorer 11 больше не поддерживает attachEvent (заменен attachEventListener?). Это, однако, не очень помогает здесь, поскольку 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.

Как исправить эту проблему? Существуют ли какие-либо известные способы обхода? Я не мог получить никаких обновлений для этого.

ответ

6

Попробуйте заставить браузер для отображения в IE режиме 10 ...

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

Спасибо, это обходное решение отлично работает. Но будем надеяться, что код фреймворка Sys.Webforms.PageRequestManager будет исправлен в будущих выпусках для поддержки IE 11. – tpe

+0

Другим обходным решением является простое исправление кода ajaxcontroltoolkit, поскольку код является открытым исходным кодом. Но тогда вам придется поддерживать отдельную ветвь этого кода, которую я действительно не рекомендую ... –

3

Я получил эту проблему с JQuery 1.10 и, кажется, что IE11 не хватает поддержки «attachEvent», который используется в JQuery и который, по-видимому, использовался и вашим фреймворком. Существует ошибка Microsoft для этого: 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 слушателя снова, так что ошибка не повторится.

Смежные вопросы