jQuery iframe加载JavaScript内容 - 上下文

时间:2012-01-31 15:40:25

标签: javascript jquery iframe

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?

的上下文中执行此代码

考虑到append()中的HTML代码是我无法控制的html AJAX响应的结果。

2 个答案:

答案 0 :(得分:0)

当你使用jQuery使用iFrame时,你应该像这样引用它:

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

我不知道这是否有帮助,但你的问题不是很明确......

答案 1 :(得分:0)

使用上下文选择器将iframe指定为目标:

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

使用等式检查来标识上下文节点:

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

<强>参考