2016-07-21 29 views
1

私は自分のページにbeforeunloadイベントを使用しているので、ユーザーが自分のWebサイト/タブを閉じようとしたときにフォームをすべて消さないといっぱい。しかし、問題は、私のページは、すべてのセクションフォームの塗りつぶしの後にリロードする豊富なフォームを持っているということです。ユーザーがブラウザ/タブを閉じるときにのみbeforeloadを呼び出す

手段ページには複数のフォームがあり、それぞれに独自の送信ボタンがあります。ユーザーが1つを保存すると、formページがリロードされます。 しかし、リロード時にbeforeunloadが解雇され、ユーザーに「ウェブサイトから退出しますか?」と尋ねます。ユーザーはウェブサイトから離れるつもりはなく、ページを再ロードしただけです。

要するに、ページのリロード時にbeforeunloadを避け、ユーザーがタブまたはブラウザを閉じるときにのみ呼び出します。それが可能ですか?

私は、次のコードを試してみましたが、それはうまくいきませんでした:

window.onbeforeunload = function(e) { 
    var e = e || window.event; 
    var target = e.target.URL; 

    if (target == "http://mywebsite.com/customerdetails") 
    { 
    return false; 
    } 
}; 

答えて

1

私はかつて同じ問題を持っていたし、良い解決策を得ることができませんでした。私が見つけた回避策は、ページをリロードする前にonbeforeunloadの登録を解除することでした。ページがリロードされたら、それを添付してください。

2

targetの場合(ウィンドウを表示して閉じる)の両方のケースで同じようです。

formSubmittedのように "フラグ"を保持し、falseに設定します。フォームを提出したら、trueに設定してください。 formSubmittedfalseまたはtrueであるかどうかを確認してください。onbeforeunload

このような何か:真のvarナビゲーション=のようなナビゲーションボタンのいずれかをクリックすると、変数を設定し

var formSubmitted = false; 

window.onbeforeunload = function(e) { 
    var e = e || window.event; 
    var target = e.target.URL; 

    if (!formSubmitted) 
    { 
    return false; 
    } 
}; 
<form action="/asdf" onsubmit="formSubmitted = true"> 
    <input type="text" name="test" /> 
    <button>Submit</button> 
</form> 

http://output.jsbin.com/hayahut

+0

答えはありますが、動作していません:(デモを試してみましたか?) – Hammad

+0

デモでは、再読み込みを試みて、プロンプトメッセージが表示されます。 –

+0

私はあなたのJSBinリンクを開いてf5を押して、警告を表示しました。私はそれを望んでいません。私はタブ/ウィンドウを閉じようとするときに、その時にプロンプ​​トを表示します。 – Hammad

0

に。 onbeforeunloadイベントハンドラでナビゲートしているかどうかを確認します。

関連する問題