2

私の問題は、次の単純なJavaScriptコードを使用するよりも少し複雑です

window.onbeforeunload = function (e) {      
  return 'Are You Sure?';
};

eコマースのWebページで、ユーザーがショッピングカートに商品を持っていることをユーザーに知らせて、前に気が変わったようにします。

  1. ブラウザのタブ/ウィンドウを閉じる
  2. 別のドメインに移動する

上記のJavaScriptメソッドは、ユーザーがドメイン内をナビゲートしている場合でも呼び出されるため、私の問題を解決しません。

短い:

  1. ユーザーがウィンドウを閉じようとします->ダイアログを表示
  2. ユーザーがブラウザのアドレスバーでwww.mydomain.com/shoppingcartのURLをwww.google.comに変更->ダイアログを表示
  3. ユーザーは、チェックアウトボタンを使用してwww.mydomain.com/checkoutに移動するか、ブラウザーの[戻る]ボタンを押します->ダイアログを表示しない
4

6 に答える 6

2

訪問者があなたのウェブサイトを自由に離れて、単に彼らの情報 (DB、セッション変数など) を記憶できるようにすることをお勧めします。eコマースに関して言えば、それは顧客を維持するための丁寧な方法です.

誰かがあなたのウェブサイトを離れたい場合、彼らはそうします。事前に再確認することは、おそらく顧客を苛立たせ、返品の可能性を減らすだけです.

于 2009-06-29T03:09:41.700 に答える
0

私もこれを調べていました。理由は、Web フォーム全体に入力し、保存ボタンを押さない、本当に愚かなエンド ユーザーがいるからです。

私はこれがあなたに興味があることを発見しました、良い解決策のようです: http://www.4guysfromrolla.com/demos/OnBeforeUnloadDemo1.htm

于 2009-08-13T03:38:32.710 に答える
0

beforeUnload-event オブジェクトにはユーザーが行こうとしている場所が含まれていないため、これを行うための「ハック」の 1 つは、サイトのすべてのリンクにクリック リスナーを追加し、そのハンドラーで unload-listener を無効にすることです。あまりきれいではありませんし、ユーザーがキーボードでナビゲートする場合はおそらく機能しませんが、現時点ではそれが私の最善の推測です。

于 2009-06-23T10:50:58.713 に答える
0

onbeforeunloadを使用してから、すべての内部リンクを変更して無効にする必要があるようです。おそらく後者のためにすべきことは、jQuery イベントでしょう。JS を実際にhrefs実行するのはひどいことです。特に、検索エンジンのクロールを無効にしてしまうからです。

于 2009-06-23T10:53:27.540 に答える