1

Internet Explorer でウィンドウをポップアップする次の JavaScript コードがあります。コードは、Microsoft CRM モーダル ダイアログ ボックス内のページから実行されます。(RequestID は、テスト システムで常に同じ文字列です。現時点では、引用符なしで "abcdefg" が含まれています)。

var cancelUrl = "CancelRequest.aspx?RequestID=" + RequestID;
alert("About to open a window.\n\n" + cancelUrl);
window.open(cancelUrl);
alert("Window opened");

ウィンドウを開こうとしていることを知らせるメッセージが表示されることを期待しています。次に、ウィンドウが開いているのを見て、ウィンドウが開かれたという別のメッセージを受け取ることを期待しています。最後の 2 つのイベントの順序はあまり気にしません。アラートがあるので、コードが実行されたことがわかります。

2 台の PC と仮想 PC があります。すべてIE7を実行しています。Windows 2003 VPC では、メッセージとポップアップが毎回必ず表示されます。

Vista PC および WinXP PC では、メッセージは表示されますが、ポップアップは断続的にしか表示されません。(これはVista PCでも当てはまると思います)。

IE では、3 つすべてが同じ設定になっています。すべて IE ポップアップ ブロッカーが無効になっており、他のポップアップ ブロッカーはインストールされていません。

誰でもこれに光を当てることができますか?

4

3 に答える 3

3

ああ、私はそれを理解したと思います...説明でそれを逃しました...

IEモーダル ダイアログから非モーダルウィンドウを開こうとしています。

このAFAIKは機能しないはずです。

代わりに、別のモーダル ウィンドウを開いてみてください。

効果的にあなたは言っています...

ウィンドウAで、モーダルウィンドウBを開き、非モーダルウィンドウCを開きますが、これは実際には有効ではありません.

于 2008-11-07T17:00:47.840 に答える
0

このコードは単純です。デバッガーを使用して、何が起こっているかを確認します。

そのサイトを FireFox または Chrome で確認してください。これらには JS デバッガーがあります。

編集:

try/catch ブロックを追加しwindow.open()て、そこに例外があるかどうかを確認します。

編集2:

RequestId として文字を送信していることがわかります。その URL がその種類の値を処理できるかどうかを確認する必要があります。name はRequestId数値のみのパラメーターである可能性が高いと思います。それが正しい場合、ウィンドウを開こうとするとサーバー側がクラッシュし、何も起こらないことがあります。try/catch ブロックとテストを設定する理由がさらに増えました。

于 2008-11-04T14:15:38.110 に答える
0

IE で動作する Firebug lite を試してみてください。

http://getfirebug.com/lite.html

他の人が言及した try/catch も良い考えです。おもう。

さらに、ポップアップが、既に開いているが最小化されているウィンドウを使用しようとしている可能性はありますか? 動作していないように見えますが、実際には最小化されたウィンドウをリロードしているだけですか?

于 2008-11-04T16:43:02.727 に答える