2

私はマルチブラウザ互換性が必要なプロジェクトに取り組んでおり、Adobe Reader の印刷ダイアログがアクティブになり、IE 以外の他のすべてのブラウザで表示されるという問題が発生しています。次のように object タグを使用して PDF をブラウザに埋め込みます。

<object id="pdfObj" type="application/pdf" style="width:60%;height:95%;position:relative;top:2%;left:0%;right:10%;bottom:10%;margin:0px;padding:0px;border:0px;" data="PDFView.aspx"></object>

jQueryを使用して、印刷リンクのクリックを次のようにキャッチします。

                $('#PrintLink').click(function () {
                $("#pdfObj")[0].print();
            });

これは IE で動作しますが、Web 開発者ツールを実行している Firefox で実行すると、「$("#pdfObj")[0].print is not a function」というエラーが表示されます。Chrome では、「Uncaught TypeError: Object# has no method print.

これらの他のブラウザでこれを達成する方法を知っている人はいますか? あなたの答えは大歓迎です。

ジェームズ

4

1 に答える 1

0

これは古い質問であることは承知していますが、この 1 週間、これに対する解決策を探していました。問題は、ページの URL が www で始まらない場合、Firefox が要素にアクセスできないことです。このスクリプトをページの上部に追加してみてください。

<script type="text/javascript">
    if ( location.host.toLowerCase().substring(0,3) != "www" )
    {
        location.href = location.href.replace( /\/\//, "//www." );
    }
</script>

これにより、ユーザーは同じ URL にリダイレクトされますが、www が追加されます。その始まりに。

次に、PDF を iframe に埋め込みます。

<iframe id="iframe" src="myPDF.pdf" width="200" height="500"></iframe>

次に、この JavaScript 関数を使用して PDF を印刷できます。

document.getElementById("iframe").contentWindow.print();

IE と Safari で異なるコードが必要な場合は、JavaScript でチェックを実行して、ユーザーが使用しているブラウザーを確認できます。これが役に立てば幸いです。

于 2014-08-26T08:42:37.343 に答える