1

これは、この質問のフォローアップです。親ページからiframeでjavascriptを呼び出す

@Tomalakから提供された回答を実装しました。

これがjsFiddleです

問題はこれです。のコンテンツiframeは動的に作成されます(したがって、クロスドメインの問題はありません)。onclickコンテンツ内には、イベントハンドラーがを呼び出すボタンがありますwindow.print()。これは、のコンテンツのみを印刷しますiframe(これは優れており、概念実証として機能します)。

さらに、親ページには、によって公開されたパブリック関数を呼び出すボタンがありますiframe。関数はprintContentであり、iframeボタンのonclickイベントハンドラーと同様に、も呼び出しますwindow.print()

これは、IE 8を使用して親ページのボタンから印刷する場合、親ページのコンテンツも印刷されるという問題です。(これはChromeでは発生しません。)

IE 8がコンテンツのみを印刷するようにする修正はありiframeますか?

興味深いことに、パブリック関数を介して戻ると、 IE 8を使用している場合でも、コンテンツwindow.document.titleのが返されます。titleiframe

フィドルは問題を示し、より詳細な情報を提供します。

4

1 に答える 1

2

IEでは、印刷するウィンドウにフォーカスを設定する必要があります。これにより、関数が親ページにある場合にiframeが出力されます。

function printContent(){
    var el = document.getElementById('myFrame');
    el.contentWindow.focus();
    el.contentWindow.print();
    return;
}

関数がiframe内にある場合は、どこからでも印刷できます。

function printContent(){
    window.focus();
    window.print();
    return;
}
于 2012-08-02T15:00:45.427 に答える