jQuery Print Previewプラグインを使用して[印刷]をクリックすると、次のエラーが表示され、Firebugが表示されます。
Error: Permission denied to access property 'name'
if (window.frames[i].name == "print-frame") {
それが何を意味するのか、それをどのように修正するのか正確にはわかりません。
jQuery Print Previewプラグインを使用して[印刷]をクリックすると、次のエラーが表示され、Firebugが表示されます。
Error: Permission denied to access property 'name'
if (window.frames[i].name == "print-frame") {
それが何を意味するのか、それをどのように修正するのか正確にはわかりません。
この問題を解決し、すべての主要なブラウザで正しく動作する方法があります。このソリューションは、jQueryPrintPreviewのGithubページでDerickによって発見されました。
これが解決策です。44行目あたりに次のコードが表示されます。
// The frame lives
for (var i=0; i < window.frames.length; i++) {
if (window.frames[i].name == "print-frame") {
var print_frame_ref = window.frames[i].document;
break;
}
}
上記のコードを次のように置き換えます。
print_frame_ref = print_frame[0].contentWindow.document;
問題が解決しました。
これがChromeのエラーです、これで明らかになると思いますか?
html 。ドメイン、プロトコル、およびポートは一致する必要があります。
あなたのページはww.ubhape2.comにあり、s7.addthis.comのフレームにアクセスしています
この問題を修正するには、この行を変更します
<script type="text/javascript" src="https://s7.addthis.com/js/300/addthis_widget.js#pubid=ra-4dfb00d56c76d2a5"></script>
サイトにコピーされたスクリプトを指すため。
また、自分のサイトにのみアクセスするには、そのスクリプトを編集する必要があります。
これは、XSSまたはクロスサイトスクリプティングの例です。
次に、私の質問は、競合の発生を防ぐためにjQuery印刷プレビュースクリプトを編集できますか?
いいえ。
エラーのポイントは、javascriptが別のパーティのコンテキストで実行されており、コードをそれに「注入」できないことです。
これはブラウザによって強制されます。
それが強制されなかった場合、インターネット上のすべてのユーザーが自分のマシンを危険にさらしていたでしょう。
詳細については、XSSのグーグル検索を読んでください
でも、
サーバーでjavascript(したがってiframe)をホストすると、問題は解決します。あなたが望むように行うのはあなたのコード(そしてあなたのiframe)です。