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.loadframe.ready変更してみてください。.ready

于 2012-07-25T20:34:47.213 に答える
0

次のようにします。

src属性をiFrame空白ページ (blank.htm) または "" に設定し、ready ハンドラで 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 に答える