2013-10-07 2 views
3

Я думал, что я смогу сделать это, установив контекст функции JQuery быть документом IFRAME, что-то вроде:Я хотел бы манипулировать HTML внутри фрейма с помощью JQuery

$(function(){//document ready 
$('some selector', frames['nameOfMyIframe'].document).doStuff() 
}); 

Однако это не работает. Немного осмотра показывает, что переменные в кадрах ['nameOfMyIframe'] не определены, если я не жду некоторое время для загрузки iframe. Однако при загрузке iframe переменные недоступны (я получаю разрешение на отказ от ошибок типа).

Кто-нибудь знает способ обойти это?

+8

Похоже, вы получаете укусила [Same Origin Policy] (http://en.wikipedia.org/wiki/Same-origin_policy). –

+0

У вас есть контроль над документом в iframe? – Gareth

+1

Если у вас возникли проблемы с правами доступа, я предполагаю, что содержимое iFrame находится в домене, который отличается от того, где находится ваш собственный код, не так ли? Если это так, вы пытаетесь сделать что-то, что по дизайну не может быть сделано. Вам нужно будет изучить * междоменный Javascript * (см. Комментарий Хамиди). Надеюсь, это поможет вам найти направление для решения вашей проблемы. Если и ваша страница, и содержимое iFrame находятся в одном домене, то не обращайте внимания на то, что я только что сказал. – Renan

ответ

0

Как указано выше, ваша проблема - это так называемая политика «того же происхождения», которая по сути является проблемой, связанной с областью. Связь между отдельными html-документами не является законной. Есть, однако, обходные пути для нескольких случаев, когда проживающей Iframe на той же странице, могут общаться друг с другом, используя помощь третьей стороны посредника, проверить это удивительное решение для примера:

Resizing an iframe based on content

1

Единственный «обходной путь», если вы не можете сделать другой сайт include the relevant CORS headers, - это получить сервер сервера содержимого iframe и обслуживать его как исходящий из вашего собственного домена.

Причина в том, что это не упрощает обходное решение из-за того, почему существует такой same origin policy: для защиты пользователей.

вы не можете выполнить любой доступ с Междоменное IFRAME

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