2012-04-12 5 views
1

Можно ли проверить, существует ли элемент в iframe или нет? Я знаю, что невозможно манипулировать чем-то на чужом хосте из-за той же политики происхождения. Но что, если я просто хочу узнать, существует ли элемент?jQuery/Javascript - проверить, существует ли элемент в iframe

<body id="parent"> 
    <iframe src="foreign host"> 
    <span id="exist"> 
     Yes, Yes. I'am here. 
    </span> 
    </iframe> 
</body> 

Я попытался выяснить это с JQuery:

$('iframe:first').contents().find('#exist').length throws out a 

Доступ запрещен доступ к собственности ошибки «» ownerDocument

я не хочу что-то изменить в иностранном документе. Поэтому нет опасности. Почему это отрицается?

Есть ли другой способ сделать это?

+3

Но с доступом только для чтения вы можете, например. бросить фишинговый сайт, который загрузил мой онлайн-банк в iframe, затем прочитал все мои банковские реквизиты из фрейма, как я его использовал. – Rup

+0

@Rup Вы правы. Таким образом, у меня действительно есть одна и та же исходная политика «Проблема». thx – s3mre8

ответ

0

Вы должны присвоить идентификатор вашего IFrame тег как так:

<iframe src="blah.html" id="blah"></iframe> 

Вы можете ссылаться на эту IFRAME в JQuery, выполнив:

var iframe = $("#blah"); 

После того, как вы сделали, что вы можете использовать функцию content() в файле iframe var, который вы только что создали для доступа к его DOM.

+0

Я уже использую функцию content(). – s3mre8

2

Извините, но одна и та же политика происхождения не позволяет этого, потому что вы можете читать личную информацию в другом домене или делать phising, просто вставляя полный документ iframe.

Есть альтернативные решения:

  • Запуск браузера без безопасности: p.e .: «хром-браузер --disable-веб-безопасности»
  • Сделать прокси и сделать соединение HTTP, как клиент. Сделайте прокси-сервер в том же домене, что и ваша страница.

Если информация находится в этом домене, любые другие комментарии могут вам помочь.

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