В IE при привязке к событию load в IFRAME this.contentDocument не определяется - PullRequest
2 голосов
/ 27 апреля 2011

Хорошо, терпите меня, ребята, установка на этом длинная.

У меня есть простая страница. Он загружает фрейм. Внутри этого iframe есть форма. Я хочу, чтобы форма внутри iframe взаимодействовала с родительской страницей через jQuery.

Это работает правильно в Firefox, Chrome и Safari. Убедитесь сами здесь:

http://dl.dropbox.com/u/58785/iframe-example/index.htm

Однако в Internet Explorer 6/7/8/9 это не работает. Событие load срабатывает, но jQuery не может получить указатель на элементы внутри iframe.

Я использую второй аргумент 'context' функции jQuery для установки контекста селектора, например: var form = $('#myform'), this.contentDocument)

Вот что такое батт . Используя Инструменты разработчика F12 в IE9, я могу установить точку останова в моем JavaScript и посмотреть, как IE оценивает JavaScript. Если я наведу курсор мыши на this, я увижу, что у него есть свойство contentDocument. НО , если я наведу курсор мыши на this.contentDocument, он скажет мне, что он не определен.

Shows up as defined

Shows up as undefined

Поскольку он не определен, селектор jQuery не возвращает элементов. Опять же, это только в IE. И IFRAME находится в том же домене, так что это не проблема того же происхождения.

Есть указатели?

1 Ответ

2 голосов
/ 27 апреля 2011

Не попрать ответ Роатина, но эту проблему также можно исправить, указав объявление DOCTYPEДля Internet Explorer 8 и более поздних версий это требуется для contentDocument.В противном случае, по его словам, можно использовать contentWindow (для более ранних версий IE тоже).См. информацию в W3Schools .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...