13

我正在尝试修改 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>
4

3 回答 3

19

请不要忘记cross-domain政策,否则将无法正常工作。

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

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

试试这个:

$(document).ready(function(){
    $('#ifr').ready(function(){
        $(this).contents().find('body').html('Hey, I have changed the body content yay!');
    });
});​
于 2012-07-25T20:59:44.140 回答
3

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

如果在 ready 事件已经触发后绑定,您可以尝试更改您的frame.loadto frame.readyas将立即触发。.ready

于 2012-07-25T20:34:47.213 回答
0

你会做这样的事情:

您将您的src属性设置iFrame为空白页(blank.htm)或“”,然后在准备好的处理程序中将 src 更改为ifr.htm

$(document).ready(
    $('#ifr').load(function(){
        $(this).contents().find('body').html('Hey, i`ve changed content of <body>!    Yay!!!');
    });
    $('#ifr').attr("src", "ifr.htm");
});
于 2012-07-26T07:14:13.830 回答