jQuery iframe загрузка контента JavaScript - контекст - PullRequest
1 голос
/ 31 января 2012
var iframe = $('<iframe></iframe>').attr({id:'iframe', width:'200',height:'200', border:'1'});
$(document.body).append(iframe);
$('#iframe').attr({src:'doc-iframe.php'});

$('#iframe').load(function(){

     $('<div></div>', this.contentWindow.document).append(function(){
     $(this).append('<form name="test" id="test">
        <input name="name" value="Serban"><input type="submit"></form>
        <sc'+'ript>console.log(window); document.test.submit();</sc'+'ript>');
         });

     });

Код выше выполнен на странице http://test.local/doc.html Он пытается загрузить некоторый контент в:

<iframe id="iframe" src="doc-iframe.php"></iframe>

Проблема в том, что document.test.submit () не выполняется внутри контекста #iframe и документ указывает на doc.html вместо doc-iframe .php .

Как я могу выполнить этот код в контексте #iframe?

Учтите, что HTML-код внутри append () является результатом html-ответа AJAX, которым я не могу управлять.

Ответы [ 2 ]

0 голосов
/ 28 августа 2012

Используйте контекстный селектор, чтобы указать iframe в качестве цели:

document.title = $("form#test", frames[0].document).submit();

Используйте проверку на равенство для определения узла контекста:

console.assert($(this).get(0) === $(frames[0]).get(0), "not the iframe", $(this).get(0) );

Ссылки

0 голосов
/ 31 января 2012

когда вы работаете с iFrame, с jQuery, вы всегда должны ссылаться на него так:

$(this).contents().append(...)

Не знаю, поможет ли это, но ваш вопрос не очень понятен ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...