私はOnBeforePageUnloadをトリガしようとしているのは、ユーザがタブまたはブラウザウィンドウを閉じるときだけです。ユーザーが自分のウェブサイトをナビゲートすると、ユーザーが入力したデータを失うのを防ぐための警告ダイアログが表示されます。htmlアンカー要素に対してjqueryのクリックイベントが発生する前にリダイレクトが発生するのはなぜですか?
$('a[href]').click(function (event) {
buttonOutsidePageClicked = false;
});
その後、onbeforepageunloadイベントがトリガされます。だから私のページ上のリンクがクリックされたたびに、私はフラグを設定します。
<a id="cpm_UploadLink" class="button" rel="no" href="/pages/otherPage">
<span class="btnLeft"></span>
<span class="btnMiddle">Click Me</span>
<span class="btnRight"></span>
</a>
:1次
function OnBeforeUnload(oEvent) {
if (buttonOutsidePageClicked)
return navAwayMessage;
}
これは、以外のページ上のすべての私のリンクのために正常に動作します:私は、私はonbeforeunloadダイアログに組み込まれてか示すべきであるかどうかを確認するためにフラグの値をチェックします
これらのhtmlはカスタムWebコントロールによって作成されます。リンクをクリックすると、clickイベントが発生せずにotherPageにリダイレクトされます。だから私はフラグを設定することはできませんonbeforeunloadメッセージが組み込まれて表示されます。
私はインラインこのような制御に直接のonclick属性を追加追加:
<a id="cpm_UploadLink" class="button" rel="no" href="/pages/otherPage"
onclick="javascript:buttonOutsidePageClicked = false;">
<span class="btnLeft"></span>
<span class="btnMiddle">Click Me</span>
<span class="btnRight"></span>
</a>
すべてが正常に動作します。しかし、これは私がこれを解決したいのではありません。
誰かが私がここで間違いをしていると私に説明することはできますか?
私は多くのコードを探していましたが、成功しませんでした。
私はこのポストを見つけましたPreventing Links before jQuery is Loaded これは私の問題に関係があるかどうかは分かりません。なぜなら私は1つのリンクしか持たないからです。
ご協力いただきありがとうございます。すべての
クリックイベントが発生しないため、これは私のためには機能しません。それともあなたの答えに何か恋しいですか?ライブメソッドは何をしますか?それは$( "a")と違いますか?click(function(){...}); ? – ThdK
"現在のセレクタと現在と将来一致するすべての要素のイベントハンドラをアタッチします。" jQueryがロードされた後、他のjsによってhtml要素が作成されると、liveを使用する必要があります。あなたのケースでは、カスタムWebコントロールがjs経由で要素を作成しているかどうかわからないのですか?イベントがトリガーされることはないと言います。これは、イベントがDOM要素にアタッチされていないことを意味します。 –
@ThdK - もしあなたがコードを理解していなければ、動かないとは言わないでください。今、要素がページに削除/追加されても 'ライブ'バインディングが機能するので、実際に問題を解決する可能性があります。 – Dementic