5

jQuery Print Previewプラグインを使用して[印刷]をクリックすると、次のエラーが表示され、Firebugが表示されます。

Error: Permission denied to access property 'name'

     if (window.frames[i].name == "print-frame") { 

それが何を意味するのか、それをどのように修正するのか正確にはわかりません。

4

2 に答える 2

3

この問題を解決し、すべての主要なブラウザで正しく動作する方法があります。このソリューションは、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;

問題が解決しました。

于 2012-07-25T01:40:57.703 に答える
2

これが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)です。

于 2012-07-08T15:53:59.740 に答える