2016-02-15 2 views
1

Я хочу найти простую строку, например <div class="sender" style="display: block;">, в iframe на внешнем сайте.Код поиска в iframe

Код не работает

var target = '<div class="sender" style="display: block;">' 
console.log($("iframe").contents().find('body').html().search(target) != -1) 

, потому что у меня есть ошибка

Uncaught SecurityError: Failed to read the 'contentDocument' property from 'HTMLIFrameElement': Blocked a frame with origin "http://website1.com" from accessing a frame with origin "http://website2.com". Protocols, domains, and ports must match. 

Как я могу сделать, пожалуйста?

+3

Если IFrame находится на другой домен, то вы * не можете *. Это невозможно. –

+0

Erf. Однако я не хочу редактировать код, только читать и находить строку. Это всегда один и тот же ответ? – Rodrigue

+0

К сожалению, да. Поскольку это «внешний домен», политика безопасности браузера вступает в игру и блокирует это. Вы можете «исправить» его, если у вас есть доступ к страницам в обоих доменах. –

ответ

1

Посмотрите, он сказал Failed to read the 'contentDocument'.

С правила безопасности вы не можете получить (прочитать) что-либо из внешнего сайта с другим доменом, и вы не можете его редактировать.

Он сказал Protocols, domains, and ports must match..

1

Я бы предложил использовать <object></object> или <embed></embed> или еще лучше, но решение есть, если у вас есть доступ к серверной странице, к которой вы обращаетесь, разрешаете межсайтовый скриптинг в своем заголовке при отправке его клиенту. Вопрос заключается в протоколы, домены и порты должны соответствовать и единственный способ для того, чтобы загрузить этот HTML должен иметь сервер отправить соответствующий заголовок принимать также взглянуть на этот how to block website from loading in iframe?

+1

Почему '' лучше? –

+0

http://stackoverflow.com/questions/16660559/difference-between-iframe-embed-and-object-elements –

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