3
var display_setting = "toolbar=yes, location=no, directories=yes, menubar=yes,";
    display_setting += "scrollbars=yes, width=750, height=600, left=100, top=25";
    var printwin = window.open('', 'printwin', display_setting )
    printwin.document.open()
    printwin.document.write("Testing")
    printwin.document.close()

上記のコードがIE9で「アクセスが拒否されました」エラーを生成するのに、FirefoxまたはChromeでは完全に正常に機能するのはなぜですか?回避策はありますか?これは、ExtJS4.1アプリケーションが単一ドメインのイントラネット上で実行されているものです。これは、要因となる可能性のあるExtJS履歴機能を使用します。

ありがとう

4

5 に答える 5

4

私は上記のコードでテストしましたが、IEでは1つだけ問題が見つかりました。それは、オブジェクトの勝利を宣言していない最後の行にあります...要件の詳細を提供していただければ、お手伝いします。私はあなたのコードを変更し、IEでうまく機能するように試しました。

これがテストコードです。ウィンドウを閉じたい場合は、のprintwin.close()代わりにを使用してくださいprintwin.document.close()

<script type="text/javascript">
function openwindowIE(){
var display_setting = "toolbar=yes, location=no, directories=yes, menubar=yes,";
    display_setting += "scrollbars=yes, width=750, height=600, left=100, top=25";
    var printwin = window.open('', 'printwin', display_setting )
    printwin.document.open()
    printwin.document.write("Testing")
    printwin.document.close()
}
</script>
<input type="button" onclick="openwindowIE()" value="go"  />
于 2012-11-26T12:24:48.327 に答える
1

私が間違っていなければ、IEはabout:blank(あなたが開こうとしている)は安全でないウェブサイトであり、したがってあなたはそれと通信することを許可されていないと考えています。

私が間違っていなければ、代わりに他の(空の)htmlドキュメントを開いて書き込むことができます。

于 2012-11-26T12:04:11.410 に答える
1

これは少し長いショットですが、すべてのIEウィンドウを閉じて、これをテストしましたか?私が考えている可能性は、テスト中にという名前のウィンドウを開いprintwinてから、ベースページから移動して(または新しいタブで開いたり、という名前の複数のウィンドウを開こうとしたりしてprintwin)、もう一度開こうとしている可能性があることです。名前の付いたウィンドウprintwin。ウィンドウはすでに開いていますが、ベースページはページの元のオープナーprintwinではないため、アクセスする権限がありません。

ここで重要なのは、ウィンドウ名は常に一意である必要があるということです。

于 2012-12-05T08:38:40.727 に答える
1

これを試して:

var display_setting = "toolbar=yes, location=no, directories=yes, menubar=yes,";
display_setting += "scrollbars=yes, width=750, height=600, left=100, top=25";

var printwin = window.open('about:blank', 'printwin', display_setting);

printwin.document.open();
printwin.document.write("Testing");

printwin.close();

テスト

于 2012-12-06T16:16:02.113 に答える
0

このすべての後、含まれているスクリプトの1つに次の行が含まれていることがわかります

document.domain = document.domain;

削除するとすべてが機能します。

于 2013-01-09T14:41:53.230 に答える