web-dev-qa-db-ja.com

どのような状況下でjavascript onbeforeunload動作を使用することは許容されます

Webページでは、javascript onbeforeunloadイベントを使用して、ユーザーがページを離れようとしていることをユーザーに警告できます。

window.onbeforeunload = function() {
    return 'Woah there, are you sure you want to leave this great page?'; 
}

例については https://rawgit.com/jonnymoo/b960c889a6152ffd4a1ff32437991442/raw/leave.html を参照してください

どのような状況で(ある場合)、これは使用に適したデバイスですか?

たとえば、過度に使用すると、ユーザーを困らせ、サービスから遠ざける可能性があると想像できます。一方、使用率が低いと、予期せず作業が失われる可能性があります。ベストプラクティスのガイドラインはありますか?

6
Jonny

私は少なくとも以下を良い候補者と考えることができます:

  1. ユーザーが詳細をフォームに入力していて、ページ間でデータを保持していない場合。

たとえば、オンラインショッピングサイトのチェックアウト時に自分の住所を提供しているユーザーは、戻っていくつかの詳細を追加する場合があります。このような場合、ユーザーがページから移動するとデータが失われることをユーザーに確実に知らせることができます。

  1. ユーザーが重要なページにリダイレクトされることを期待している場合。

たとえば、ユーザーを支払いゲートウェイにリダイレクトする場合、それはユーザーが誤って移動するのを防ぐためのオプションの1つです。


これらはonbeforeunloadを使用する可能性のあるケースですが、可能な限り、代わりの方法を使用することを強くお勧めします。

これを回避する主な理由は、ご指摘のとおり、一部のブラウザーはこの機能を完全にはサポートしていない場合があるためです。

もう1つの理由は、これを回避するために常にアプリケーションをよりよく設計できることです。上記のケース1では、ユーザーがチェックアウトページに戻ったときにデータが事前に入力されるように、データがビューステートで保存されていることを確認できます。ケース2の場合、ページのリダイレクト中にユーザーに待機するように求める警告をページに表示できます(ほとんどのWebサイトがそうです)。

2
Nisarg