このシナリオでは:
- ユーザーがテキストボックスに情報を入力します
- ユーザーがボタンをクリックする
- 入力された情報のサーバー側処理が行われます
- そのサーバー側の処理の結果に応じて、新しいウィンドウが開くか、現在のページにメッセージが表示されます(ポップアップは表示されません)。
async: false
jQueryajax
呼び出しで使用する以外のアプローチを思い付くことができません。これは強くお勧めしません:
このオプションをfalseに設定すると(したがって、呼び出しが非同期でなくなる)、ブラウザーが応答しなくなる可能性があるため、強くお勧めしません。
私はもう試した:
- 呼び出しを非同期にし、コールバックハンドラーで、サーバーの発言に応じて、新しいウィンドウを開くことがあります-これはポップアップブロッカーによってブロックされます
- 別のアイデアは、その不快さのために私も気にしませんでしたが、常にウィンドウを開くことです。サーバーを呼び出し、時にはそれ自体を閉じるのはこの新しいウィンドウです(途中で親のテキストを更新します)
私が決めたのは、上記で説明したことです。クリックハンドラーで同期サーバー呼び出しを実行し、サーバーがそうするように指示した場合は、新しいウィンドウを開きます。ウィンドウの開きはクリックハンドラーで行われるため、ポップアップブロッカーはこれに満足しています。だが...
良い解決策を提供していない同様の(ただし、常に新しいウィンドウを開きたいとは限らないため、重複しない)質問: