フォームの本体にonunloadメソッドが記述されています。ページには大量のコンテンツがサーバーからストリーミングされるため、フォーム全体をダウンロードするにはしばらく時間がかかります。フォームがブラウザにダウンロードされている間に、ユーザーがウィンドウの閉じるボタンをクリックすると、アンロードイベント(フラグをリセットするためのサーバーサイドアクションを呼び出すために書き込まれたイベント)がトリガされないことがあります。アンロードメソッドはページの終わりに向かって書かれていますが、これが理由ですか?私たちはオンロードが確実に呼び出されることを保証することができますか?IEで常にHTMLページのアンロードが呼び出されない
答えて
2つの理由があります。 1つは、あなたが言ったように、ブラウザは、アンロードに達していないかもしれないので、あなたはあなたのbodyタグの上に宣言する必要があります。
もう1つは、GoldenNewbyが既に述べたように、アラートなど、コードを終了するまでに時間を要するということです。これは、次のページの準備が整うとJavaScriptがメモリから消去され、実行が単に古いスクリプトで停止されるためです。スクリプトがページの読み込みよりも時間がかからないようにするには、アラートは必要ありませんが、実行に2ms以上かかることがある場合は、時間を購入する必要があります。
IEにはonbeforeunload
イベントがありますが、代わりにそのイベントを使用できます。 onbeforeunload
が既に実行した場合は、onunload
が早期に終了できるようにフラグを設定してください。あなたを打つ
window.onunload = window.onbeforeunload = function() {
if (window.isAlreadyUnloaded) return;
window.isAlreadyUnloaded = true;
// do your stuff here.
}
事は、おそらくwindow.onloadがまだ解雇されていない場合、IEはアンロードイベントを発生しないという事実です。ソリューションはこのブログの記事で説明されています:http://blog.moxiecode.com/2008/04/08/unload-event-never-fires-in-ie/
注:ブログ記事に記載されているonstopイベントは、IEの最新バージョン(少なくとも10と11)では同じように動作しません。 onloadイベントの前にページを移動(またはリフレッシュ)すると起動しません。私にとっては、実際の解決策はハンドラをonloadだけでなくonbeforeunloadイベントにバインドすることでした。 –
- 1. AJAX経由でページがロードされているときにIEでjQuery関数が呼び出されない
- 2. )(jQueryのポストによって呼び出され、内側のページをアンロード
- 3. IE互換モードJavaScript関数が呼び出されない
- 4. textFieldShouldBeginEditingが呼び出され、textFieldDidBeginEditingが呼び出されない
- 5. captureStillImageAsynchronouslyFromConnection:stillImageConnection completionHandlerが常に呼び出されない
- 6. mvcのhtmlビューでSpring Controllerが呼び出されない
- 7. HTMLフォームからサーブレットを呼び出すがサーブレットは呼び出されない
- 8. ページをアンロードする前にajaxを呼び出してください
- 9. XMLHttpRequest - JSが呼び出されたページで動作しない
- 10. メインスレッドで `JNI_OnLoad`が常に呼び出されていますか?
- 11. BeginFormがHTML部分から呼び出されていない
- 12. Struts2の成功ページが呼び出されない
- 13. WKWebview同じページ内のアンカータグが呼び出されない
- 14. ページ最初の呼び出しではないjqueryダイアログで呼び出されたaspxページのロード
- 15. jQuery呼び出しが正常に行われた後にHTMLが変更されない
- 16. onReceiveが呼び出されないときに呼び出される
- 17. .NET WebメソッドがJavaScriptから呼び出されないページ
- 18. AJAX呼び出しが呼び出されない
- 19. Internet Explorer 11 - AJAX呼び出しが呼び出されない
- 20. fbDidLoginが呼び出されず、handleURLが呼び出されない
- 21. notification.girmというコールバック関数が常に呼び出される
- 22. wpf webBrowserがjsエラーのページでloadCompletedを呼び出さない
- 23. IEのWindowsフォームコントロールがJavaScript呼び出しに応答しない
- 24. OnNavigatedFromの後にページが破壊/アンロードされない
- 25. webrtc:PCObserver#onAddStreamが呼び出しのアップグレードのために呼び出されない
- 26. CATiledLayer drawLayer:メインスレッドで常に呼び出されているinContext
- 27. 開発環境で呼び出されたときにLabViewがDLLをアンロードしない
- 28. iFrameの高さがIEで正常に返されない
- 29. Qt QWizard validateCurrentPageが最後のページで呼び出されていない
- 30. NSFetchedResultsControllerカスタムソートが呼び出されない
私の過去の経験から、onunloadイベントはあなたが望む限り、実行することは保証されていません。コードが終了する前に次のページが読み込まれると、それが完了することはありません。アプリケーションに応じて、アラートや確認のプロンプトを表示してコードを実行する時間を与えることができます。 – GoldenNewby