Ошибка: в доступе запрещено свойство 'document' в iFrame

У меня есть родительская HTML-страница, которая использует jquery для добавления динамического iframe, который имеет источник в другой домен. Я уже установил X-Frame-Options, чтобы разрешить это, и загрузка простого контента не является проблемой. На самом деле все остальные мои скрипты работают нормально.

HTML-страница, которая загружается в iFrame, использует плагин jQuery DirtyForms, который имеет несколько строк, которые выглядят как $(document). Код грязных форм и сценарии jQuery являются локальными по отношению к документу iframe.

Когда выполняется любая из этих строк, я получаю следующую ошибку в Firefox (я не тестировал другие браузеры): Ошибка: в доступе отказано в доступе к свойству "документ".

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

КСТАТИ. Дочерний код, когда он НЕ загружен в iFrame, работает отлично.

Я сейчас в растерянности, чтобы найти обходной путь.

Я предполагаю, что $(document) как-то оценивается как родительский.

Есть ли способ исправить это поведение? Возможно, изменив код плагинов. Возможно, $(document).find('contentWindow')...??

Я ценю помощь! Благодарю.

2 ответа

Ну, вы не можете получить к нему доступ. Теперь вопрос, почему?

Для этого просто перейдите по ссылкам ниже

В доступе отказано в доступе к свойству "документ"

Ошибка: в доступе отказано в доступе к свойству "документ"

И в случае, если вы хотите что-то сделать при загрузке страницы, лучше используйте приведенный ниже код для IFrame.

 <iframe ........ onload='yourFunction( this )'>

В Dirty Forms 1.x поведение по умолчанию добавляет обработчики событий к тегам привязки на любой родительской странице, на которой размещена текущая страница. Код, который делает это выглядит так:

$(top.document).on('click', 'a', aBindFn);
$(top.document).on('submit', 'form', formBindFn);

То есть он прикрепляет обработчики событий к window.top.document, Вы можете отключить это поведение с помощью:

$.DirtyForms.watchParentDocs = false;

В Dirty Forms 2.x это поведение было удалено, поскольку оно относилось только к одному конкретному случаю использования iFrames (размещение формы, которая использовала Dirty Forms в iFrame). Теперь вы можете настроить привязку событий, чтобы прикреплять обработчики событий либо к родительским (хостовым) страницам, либо к дочерним iFrames, как того требует ваша страница, но по умолчанию взаимодействие с iFrames отсутствует. Это должно позволить вам обойти такие проблемы, как этот.

Другие вопросы по тегам