Internet Explorerでポップアップウィンドウを開く奇妙な動作
-
06-07-2019 - |
質問
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と1台の仮想PCがあります。 IE7を実行しているすべて。 Windows 2003 VPCでは、メッセージとポップアップが毎回必ず表示されます。
Vista PCおよびWinXP PCでは、メッセージは表示されますが、ポップアップは断続的にしか表示されません。 (これはVista PCでも当てはまると思います。)
IEの3つはすべて同じ設定です。すべてのIEポップアップブロッカーが無効になっており、他のポップアップブロッカーはインストールされていません。
誰でもこれに何か光を当てることができますか?
解決
ああ、私はそれを手に入れたと思う...説明で見逃した...
IE のモーダルダイアログから非モーダルウィンドウを開こうとしています。
この知る限り、動作しないはずです。
代わりに別のモーダルウィンドウを開いてみてください。
実質的にあなたは言っています...
ウィンドウAでモーダルウィンドウBを開き、非モーダルウィンドウCを開きます。これは実際には有効ではありません。
他のヒント
このコードは簡単です。デバッガを使用して、何が起こっているのかを確認してください。
FireFoxまたはChromeでそのサイトをチェックしてください。JSデバッガーがあります。
編集:
window.open()
の周りにtry / catchブロックを追加し、例外があるかどうかを確認します。
編集2:
今では、RequestIdとして文字を送信していることがわかります。そのURLがそのような値を処理できるかどうかを確認する必要があります。名前は RequestId
であるため、数値のみのパラメータが必要になる可能性が高いと思います。それが正しい場合、ウィンドウを開こうとするとサーバー側がクラッシュし、その後何も起こらないことがあります。 try / catchブロックを設定してテストする理由をさらに説明します。
IEで機能するFirebug liteを試してみてください。
http://getfirebug.com/lite.html
他の人が言及したtry / catchも良いアイデアです。私は思う。
さらに、ポップアップは既に開いているが最小化されているウィンドウを使用しようとしている可能性があります。動作していないように見えますが、実際には最小化されたウィンドウをリロードしているだけですか?