3
<script type="text/javascript">
function printDoc() {
   document.getElementById("frame_singleCheque").contentWindow.print();
}
</script>

<iframe  style ="height:400px; width: 750px; overflow:scroll;"  id="frame_singleCheque" src="http://www.w3schools.com"></iframe>
<input type="button" id = "btnCPrint" value = "Print" onclick="javascript:printDoc()" />

エラー

[16:41:44.054] Error: Permission denied to access property 'print' @ http://localhost/pdf/print.php:3

iframe コンテンツを印刷するための多くのスタック推奨スレッドで確認しました。しかし、私にとってはそれらはうまくいきません。

上記のコードは、print.php ファイルにのみ存在します。iframe コンテンツを印刷したい。

また、iframe 内に存在する特定の div を印刷する方法も知りたいです。この iframe の例 " class = 'example_code notranslate' " .

4

3 に答える 3

4

クロスドメイン iframe をローカルでホストされている iframe にネストすることで、クロスドメイン iframe ページを完全に印刷できます。「プロキシ iframe」。

このようにして、親の JavaScript はプロキシ iframe を問題なく出力できます。これはローカルであるため、別のドメインから発信された内部 iframe を推移的に出力します。

この手法は機能し、私自身で検証されています。

コンテナー ページで、次のように iframe をホストします。

 <iframe id="printf" name="printf" class="A4" src="/SomeController/IFrameProxy?url=TARGETURL"></iframe>

プロキシ iframe は次のようになります。

        @model string
        <html>
            <head>
                <title>IFrame Proxy</title>
                <style>
                    html, body, iframe {
                        height: 100%;
                        width: 100%;
                        margin: 0;
                        padding: 0;
                        border-style: none;
                    }
                </style>

            </head>
            <body>
                <iframe src="@Model" seamless></iframe>
            </body>
        </html>

iframe (コンテナー ページで定義) を出力する JavaScript は、次のようになります。

        function printFrame() {
            var frm = document.getElementById("printf").contentWindow;
            frm.focus();// focus on contentWindow is needed on some ie versions
            frm.print();
        }
于 2014-11-20T05:52:17.387 に答える
-1

ここでは、かなり標準的なクロスドメイン iframe の問題があるようです。つまり、ブラウザーはこれを行うことができないように設計されています。私が提案できるごまかしはたくさんありますが、ほとんどの場合、iframe はこの問題に対する間違った解決策です。

基本的に、最善の策はページをスクレイピングすることです。http リクエストを作成し、必要なコンテンツを解析します。その後、独自のページの DOM の一部として操作できます。

于 2013-08-28T11:23:57.677 に答える