1

この投稿を書く前に、すべてのクロム/Firefox と IE で onbeforeunload イベントを試したことを確認してください。IE と Firefox の両方で正常に動作していますが、クロムでは失敗しています。

ただし、ある場合、ajax 呼び出しを async に false に設定できることに気付きましたが、クロスサイトの ajax 呼び出しではうまくいきませんでした。

私がやろうとしていることの背景を説明するために... jqueryを使用して自動化テスト用の記録および再生jsエンジンを構築しようとしています。コールバックには$.ajaxを使用しています。

ここでデモンストレーションを見つけることができます

http://orgchartasp.net/jtest/ff.swf.html

私がやっていることは、クライアント側ですべてのイベントをキャプチャし、サーバーの onbeforeunload イベントにポストバックすることです。アンロードする前にモーダル ウィンドウを開き、保存後に閉じることで、最終的に IE と FF で成功しました。

onbeforeunload クロス ブラウザ/クロス サイトで本当に成功した人はいますか? はいの場合は、私を助けてください。

4

1 に答える 1

1

onbeforeunloadイベントの問題は、現在のウィンドウでサーバーに何かを戻すには遅すぎるということです。イベントの原因となったアクション、つまりブラウザが新しいページをロードしようとしているアクションは、次にロードするページをすでに決定しています。

このイベントを処理するときのブラウザーの正確な動作は、HTML5 まではどの標準にも含まれていなかったため、異なる場合があります。

イベントからサーバーに何かを送信する場合は、新しいウィンドウを開いてそこから投稿するか、AJAX 呼び出しを行う必要があります。ただし、応答を待つことができないため、それはファイア アンド フォーゲットです。

確実に動作するために に依存するべきではありませonbeforeunloadん。そのため、アーキテクチャを構築するべきではありません。

于 2012-09-24T08:39:21.927 に答える