Как найти div внутри iframe - PullRequest
9 голосов
/ 05 января 2011

Я пытаюсь использовать jquery, чтобы найти div внутри iframe.Есть ли лучший способ, чем тот, который я использую ниже?

$('#Iframe').contents().find('#MyDiv')

function atmslidein(){
   $("#customer").ready(function(){         
       if($('#customer').attr('src')=='ATM.html')
       {
          $('#customer').contents().find('.atm_page').css('margin-left', '270px'); 
          $('#customer').contents().find('.tele').css('display', 'none');
       }
    })
}

Я почти неделю пытался сделать эту работу:

$('#Iframe').contents().find('#MyDiv')

Вот почему я попробовал другойспособ доступа к разделу iframe.


В любом случае я нашел то, что должен иметь документ iframe, и только тогда вышеуказанная функция работает правильно:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

Моя проблема решена, спасибо, Но кто-нибудь может объяснить, почему это необходимо?

Ответы [ 3 ]

13 голосов
/ 05 января 2011

Я не думаю, что jQuery может получить доступ к содержимому contentWindow / Document таким образом. В прошлом я должен был сделать это:

$('#iframe').each(function() {
    $('#MyDiv', this.contentWindow.document||this.contentDocument);
});

** Обратите внимание, что this.contentWindow||this.contentDocument требуется для корректной работы через IE и большинство других браузеров. Как только вы получите окно с контентом, вам нужно выбрать документ. Затем вы можете использовать jQuery для манипулирования или обхода DOM, но только если источник iframe находится в том же домене.

** Обновлено, чтобы исправить ошибку, когда мы не указываем документ после получения contentWindow / Document.

4 голосов
/ 05 января 2011

Это будет работать только в том случае, если источник Iframe находится в том же домене, что и ваша страница, если не браузер не разрешит его по соображениям безопасности

0 голосов
/ 05 января 2011

Использовать контекст селектора:

var frame = $('#frame_id');
var div = $('#mydiv', frame);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...