Ошибка в Internet Explorer 9 (не более ранние версии или другие браузеры) при включении jQuery в iframe - PullRequest
11 голосов
/ 30 июня 2011

По сути, у меня есть страница, на которой запущен фреймворк fancybox.В этот iframe я также включаю jQuery.Но когда я тестирую его в Internet Explorer 9, он выдает ошибку

Строка: 68 \ n Ошибка: «Объект» не определен`

Эта ошибка в файлеjquery-1.4.1.js, и рассматриваемая строка является второй строкой этого:

// Save a reference to some core methods
toString = Object.prototype.toString,
hasOwnProperty = Object.prototype.hasOwnProperty,
push = Array.prototype.push,
slice = Array.prototype.slice,
indexOf = Array.prototype.indexOf;

, который является последними строками var jQuery = function( selector, context ) {.

Нет проблем, если я в представлении совместимостиНет проблем в других браузерах, только Internet Explorer 9 в режиме Internet Explorer 9 и стандарты Internet Explorer 9.Если я игнорирую ошибку, я не вижу проблем с использованием любой версии jQuery.

Что случилось, и что я могу сделать, чтобы исправить?

Ответы [ 4 ]

8 голосов
/ 28 июля 2011

Проблема была исправлена, когда я удалил атрибут SRC из iframe и добавил событие onOpen в диалоговое окно jQuery:

open: function()
  {
    document.getElementById("mainFrame").src = "/login.aspx";
  }
3 голосов
/ 16 сентября 2011

У меня была ТОЧНАЯ та же проблема, но моя причина была другой. Я решил, что поделюсь здесь, если бы другие были в одной лодке со мной, особенно если учесть, что мне потребовалось около 4 часов, чтобы выследить ...

На нашей главной странице был iframe, в результате которого атрибут src дважды менялся за очень короткий промежуток времени (фактически мы дважды загружали один и тот же src случайно - один раз непосредственно в HTML, а затем снова при загрузке страницы через JavaScript). ). Я не уверен, почему Internet Explorer 9 задыхается, но я предполагаю, что кадр был частично через инициализацию своих сценариев, когда src был установлен снова, переводя движок JavaScript в несчастное состояние. В любом случае, я рад, что нашел его, так как мы не должны были загружать кадр дважды!

Однако настоящая причина, по которой Internet Explorer 9 так плохо умер, - загадка.

2 голосов
/ 30 декабря 2011

Это связанная проблема: IE9 генерирует исключения при загрузке скриптов в iframe.Почему?

Похоже, что в Internet Explorer существует некоторая реальная проблема с нативными глобальными объектами, такими как «Функция» и «Объект», в некоторых случаях, когда скрипты загружаются раньше (в разделе заголовка)iframe ...

Я назначил награду за этот другой вопрос, чтобы привлечь к нему больше внимания.

Из своего опыта я знаю, что эта проблема также существует в IE8, но она встречалась реже.там кажется.Похоже, в IE9 стало еще хуже ...

2 голосов
/ 05 августа 2011

Д'о, подумал, у меня была последняя модная коробка. Оказывается, у меня 1.3.1, 1.3.4 исправляет эту проблему.

UPD (sompylasar): Фактически это было исправлено в 1.3.2 (см. changelog ). Я сравнил исходный код 1.3.2 с 1.3.1 и обнаружил следующее различие, которое решает проблему:

content.find('iframe').attr('src', isIE6 && /^https/i.test(window.location.href || '') ? 'javascript:void(false)' : 'about:blank');

где isIE6 равно:

isIE6 = $.browser.msie && $.browser.version < 7 && !window.XMLHttpRequest,

Этот фрагмент должен быть выполнен перед удалением iframe из DOM.

...