私は、Web訪問者が自分のサイトを離れるときにトリガされるポップアップ(ブートストラップモーダルスタイル)を実装しようとしています。しかし、それはFFの中では動作しませんでしたbeforeunloadのイベントリスナーを削除する
$(window).bind('beforeunload', function(){
$("#sModal").modal('show');
return 'Take our survey before you leave.';
});
IEで正常に働いていた:
は、私は別の選択肢を試してみました。私はまた、ページ全体が読み込まれているので、 "あなたは退出したいか滞在していますか"という警告が、自分のウェブサイト自体をクリックすると、すべてのブラウザタイプでクリックされて表示されていたという別の問題もありました。私が使用してbeforeunloadリスナーを削除するためにすべての私のアンカータグをループしてクリックリスナーを追加することによってこの問題を回避ました:
window.onload = function() {
var allLinks = document.getElementsByTagName('a');
for (var i = 0; i < allLinks.length; i++) {
allLinks[i].addEventListener("click", removeBeforeUnload, false);
}
};
removeBeforeUnload機能が戻ったばかりに取得
$(window).unbind('beforeunload');
を使用実際にpopoup/modalがすべてのブラウザに表示されるようにするには、文書のロードが完了した後、このstackoverflowの答えのコードを使用してください:
window.onbeforeunload and window.onunload is not working in Firefox , Safari , Opera?
このソリューションはすべてのブラウザで機能しますが、ローカルのクリックしたリンクでこのイベントをアンバインドすることはできません。私はstackoverflowのanswer.Thanksから使用することを、あなたは正しい方向に私を指すと私は、このイベントのバインドを解除することができない理由を説明することができることを望むすべてのもの
window.removeEventlistener('beforeunload',null,false);
window.removeEventlistener('onbeforeunload',null,false);
window.removeBeforeUnload();
window.onbeforeunload = null;
を試してみました!
にリスナーを削除する必要はありません、これは良い質問です
にリンクのクリックハンドラにnullにこのフラグを設定するか、偽私はリフレッシュ、バックなどをキャプチャせずにブラウザでクローズイベントをキャプチャしようとして同じ問題が発生したので –
@スターリングアーチャーありがとう!私はこれを解決することができます、私は机の舞台に立ち向かうためです!私はイベントリスナーが登録抹消されていない理由を知らない! – mmokh
jQueryスタイルの 'bind/unbind'(もっと最近のバージョンのjQueryでは' on/off')、あるいはDOMスタイルの 'addEventListener/removeEventListener'セマンティクスを使うことをお勧めします。 2つを組み合わせると狂気につながります:)。 –