ウィンドウ イベント ハンドラー: Firefox、Safari、Opera での制限付きサポート
Web 開発では、多くの場合、次のイベントに関連するイベントを処理する必要があります。ページを閉じるかアンロードするなど、ブラウザ ウィンドウの動作。ただし、一般的なイベント ハンドラー window.onbeforeunload と window.onunload は、異なるブラウザ間で一貫性のないサポートを示します。
問題の説明
チャット アプリケーションで確認したように、ウィンドウ.onbeforeunload と window.onunload は、Internet Explorer と Chrome で期待どおりに機能します。ただし、他のブラウザでは次の問題が発生します。
- window.onbeforeunload は Opera では機能せず、確認メッセージも表示されません。
- window.onunload は Safari では機能しません。 Opera、Firefox。
ブラウザのサポート制限
残念ながら、あなたが言及したブラウザには、次のイベント ハンドラーのサポートに関して制限があります。
-
Opera: onbeforeunload は、セキュリティ上の懸念によりサポートされていません。
-
Safari: onunload は、パフォーマンスの最適化により完全にはサポートされていません。代わりに、pagehide イベントを使用できます。
-
Firefox: onunload は、既知のバグのため完全にはサポートされていません。
代替ソリューション
使用しているイベント ハンドラーは一部のブラウザではサポートされていないため、代わりの解決策をいくつか示します:
-
ページ非表示イベント (Safari): Safari の onunload の代わりに pagehide イベントを使用します。
-
ページ可視性 API: ページ可視性 API を実装して、ページ可視性の変更を追跡し、必要に応じてユーザーにプロンプトを表示します。
-
SessionStorage : セッション情報 (セッション ID など) を sessionStorage に保存し、ログアウト操作を実行するために他のブラウザにその情報が存在するかどうかを確認します。
重要な注意事項:
- 提供されているコード例は、onbeforeunload または onunload をサポートしていないブラウザでは動作しない可能性があります。
- さまざまな環境間で最適な機能を確保するために、イベント ハンドラーを使用するときはブラウザの互換性を常に考慮してください。
以上がFirefox、Safari、Opera が `onbeforeunload` や `onunload` のようなウィンドウ イベント ハンドラーをサポートしないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。