1

iframeを動的に作成し、それをページのdivに貼り付ける必要があるページがあります。次のようにiframeを作成します。

var frame = $('<iframe>')
    .attr('id', 'myIframe')
    .addClass('someClass')
    .appendTo($('#someDiv'));

条件に応じて、次のいずれかを行う必要があります。A)iframe srcを他のページに設定するか、B)HTMLをiframeに動的に追加する。

オプションAは正常に機能していますが、オプションBはセキュリティエラーをスローしています。

if (someCondition) {
    // option A, works fine
    frame.attr('src', someURL);
} else {
    // option B, blows up with "Access is denied."
    $(frame[0].contentWindow.document).find('body').html(someHTML);
}

document.domainHTMLを設定する前に、動的iframeにを設定する必要がありますか?どうすればいいですか?動的コンテンツを動的iframeに追加する簡単な方法はありますか?

前もって感謝します。

ここで編集するのは、要求に応じて、動的iframeのレンダリングされたHTMLです。

<div id="someDiv">
    <iframe id="myIframe" class="someClass"></iframe>
</div>
4

3 に答える 3

2

申し訳ありませんが、iframeが別のドメインのURLソースを参照している場合、アクセスできません。

http://javascript.info/tutorial/same-origin-security-policy

そうは言っても、同じドメインのURLを持っているか、属性srcに「javascript:void(0);」を入力すれば、その本体にアクセスできます。その後、次の方法でアクセスしてみてください。

$($('iframe').contents().get(0)).find('body')
于 2012-10-11T15:06:01.620 に答える
1

この問題を回避するために、この質問への回答と同様の修正を使用することができました。

var frame = $('<iframe>')
    .attr('id', 'myIframe')
    .addClass('someClass')
    .attr('src', 'javascript:(function () {' + 
        'document.open();document.domain=\'myDomain.net\';document.close();' + 
     '})();');
    .appendTo($('#someDiv'));

あらゆる定義によるハックですが、問題を解決するための最良の方法だと思います。

于 2012-10-11T16:34:40.900 に答える
0

iframeを作成するときは、srcが指定されていることを確認してください。

src='about:blank'

または、サーバー上にblank.htmlを作成し、それをポイントします

于 2012-10-11T15:06:50.023 に答える