无法修改iframe的内容,有什么不对?

时间:2012-07-25 20:23:01

标签: jquery html

我正在尝试修改iframe的内容,但它不起作用。

这是我的main.html

<html>
<head><title>Main page</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
</head>
<body>

<h3>Main page</h3>
<iframe src="ifr.htm" id="ifr" name="ifr"></iframe>
</body>

<script>
$(document).ready(function(){
    $('#ifr').load(function(){
        $('#ifr').contents().find('body').html('Hey, i`ve changed content of <body>!    Yay!!!');
    });
});

</script>
</html>

这是我的ifr.htm

<html>
<head><title>Iframe page</title></head>
<body>
 Content to be displayed in iframe ...
</body>
</html>

3 个答案:

答案 0 :(得分:16)

请不要忘记cross-domain政策,否则无效。

现场演示: http://jsfiddle.net/oscarj24/wTWjF/

(只是要知道,我没有使用404页面,看看)

试试这个:

$(document).ready(function(){
    $('#ifr').ready(function(){
        $(this).contents().find('body').html('Hey, I have changed content of <body> Yay!');
    });
});​

答案 1 :(得分:2)

假设您尊重跨域策略,这听起来像是一个时间问题。当父页面的document.ready触发时,您的iframe已经完成加载。

您可以尝试将frame.load更改为frame.ready,因为如果已在触发就绪事件后绑定.ready,{{1}}将立即触发。

答案 2 :(得分:1)

你会做这样的事情:

您将src的{​​{1}}属性设置为空白页(blank.htm)或“”,然后在就绪处理程序中将src更改为 ifr.htm

iFrame