在iframe中创建DOM元素

时间:2014-08-08 02:58:54

标签: javascript jquery html iframe

它是一个简单的html代码,我不知道为什么不工作!
html文件包含iframe标记,内容为id 脚本创建一个元素并尝试将其附加到iframe 它不起作用,我不知道为什么它的工作(见代码评论)!

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>

<iframe id="s1" src="ifsrc.html"></iframe>

<script>
    var soal = document.createElement("a");
    var soaltext = document.createTextNode("text");
    var soalat = document.createAttribute("class");
    soalat.value = "class ";
    var soalid = document.createAttribute("id");
    soalid.value = "attid";

    soal.setAttributeNode(soalat);
    soal.setAttributeNode(soalid);
    soal.appendChild(soaltext);
    //document.body.appendChild(soal); its work!

    var iFrame =  document.getElementById("s1");
    var iFrameBody;
    iFrameBody = iFrame.contentDocument.getElementsByTagName("body")[0];
    iFrameBody.appendChild(soal); // its not work!
</script>

</body>
</html>

ifsrc.html

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
sample text
</body>
</html>

1 个答案:

答案 0 :(得分:1)

它的工作!

<script>
    var soal = document.createElement("a");
    var soaltext = document.createTextNode("tgggext");
    soal.appendChild(soaltext);

    alert("ad");

    var iFrame =  document.getElementById("s1");
    var iFrameBody;
    iFrameBody = iFrame.contentDocument.getElementsByTagName("body")[0];
    iFrameBody.appendChild(soal);
</script>

但它不起作用!!!

<script>
    var soal = document.createElement("a");
    var soaltext = document.createTextNode("tgggext");
    soal.appendChild(soaltext);

    var iFrame =  document.getElementById("s1");
    var iFrameBody;
    iFrameBody = iFrame.contentDocument.getElementsByTagName("body")[0];
    iFrameBody.appendChild(soal);
</script>

最后我找到了我的问题。关于准备活动 警报很少花费时间,并且足以让iframe完成加载并准备就绪 我使用此代码而不是上面。

$(document).ready(function(){
    $('#s1').ready(function(){
        $('#s1').contents().find('body').html("<a>Hey, i`ve changed conten!</a>");
    });
});

并且其工作正常,因为就绪事件等待iframe加载完成。