2012-08-29 14 views
10

このコードはFirefox上で正常に動作しますが、ですが、Chromeでアンロードイベントを動作させることはできません Chromeはアンロードイベントのサポートを停止しましたか?Chromeでアンロードイベントを発生させることはできません

これは私のコードです:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title></title> 

<script type="text/javascript" src="../jquery/jquery.js"></script> 

<script type="text/javascript"> 

    function pageHidden(evt) { alert("Are you sure 1?"); } //WORKS ON FIREFOX BUT NOT IN CHROME 
    window.addEventListener("pagehide", pageHidden, false); 

    window.onunload = function() { alert("Are you sure 2?"); } //TRIGGERS ON LOAD NOT ON UNLOAD 

    $(window).unload(function() { //WORKS ON FIREFOX BUT NOT IN CHROME 
     alert("Are you sure 3?"); 
    }); 

</script> 
</head> 

<body> 
TEST WEBSITE 
<a href="http://www.iamawesome.com">external link</a> 
</body> 
</html> 

にはどうすればアンロードイベントがChromeで動作するように入手できますか?

ありがとうございます!


ANSWER: アラートとunloadイベントをテストしないでください。)

+1

可能な複製:http://stackoverflow.com/questions/803887/can-i-pop-up-a-confirmation-dialog-when-the-user-is-closing-the-window-in-safari –

+0

あなたのコードのどこにでも何かを誘発しているわけではありません。あなたはハンドラーを束縛しているだけです。 – jbabey

+0

[このバグレポート](http://bugs.jquery.com/ticket/10509)を確認してください。つまり、Chromeでは動作しません。代わりに '.onunload'ハンドラを使うようにしてください。でも、それは 'fixed'であるかもしれません。 ) – raina77ow

答えて

14
window.onunload = alert("Are you sure 2?"); 

これは正しくありません。あなたは機能に設定する必要があり、alertの結果にonunloadを設定している:

window.onunload = function(){ 
    alert("Are you sure?"); 
} 

あなたはjQueryのを使用したい場合は、これはすべてのブラウザで動作します。

$(window).unload(function() { 
    alert("Are you sure?"); 
}); 

:それはChromeで働いていないようですに思えるかもしれないが、それはあります。これは、Chromeがイベントのブロックalertをブロックするためです。

+1

問題がありましたChromeはすべてのアラートをブロックしていましたが、console.logを試しました。 ! –

+0

ようこそ:-) –

+2

アラートを使用すると、Chromeのコンソールにエラーが表示されます。 –

2

試してみてください。

window.onbeforeunload = function() { 
    // code 
}; 

または

window.onpagehide = function() { 
    // code 
}; 
+0

ありがとうKorikulum!私はこれを試しましたが、各機能の中に書き込むアラートメッセージを表示していません。 –

+0

onpagehideは知っておくと便利なイベントですが、ページがなくなるたびに呼び出されるとは信じられません。たとえば、新しいタブを起動してブラウザ全体を閉じると、イベントが発生しないことがあります。 –

1

あなたは何をトリガしません。 - 追加したい式を実行するだけですハンドラとして:

window.onunload = function(event) { 
    alert("Are you sure 2?"); 
}; 
+0

まだ動作していませんが、ページを終了して警告メッセージが表示されません:( –

1

私が読んだところから、そのイベントがトリガーされるとChromeは警告をブロックするようです。しかし、いくつかの機能を実行することはできますが、ユーザーとやりとりするものはありません。

window.onbeforeunload in Chrome: what is the most recent fix?から、確認メッセージをポップアップするだけであれば、コールバックとして設定した関数のメッセージを含む文字列を返す必要があります。

window.onbeforeunload = function() { 
    // Some wrap up code (no alerts, confirms, redirects, etc) 
    return 'My confirmation messsage'; 
} 

「私の確認メッセージ」というテキストがChromeの選択ダイアログに表示されます。 Firefoxはこの動作を文書化していますhere

+0

これは私のために働いてくれてありがとう、私の現在のデザイン – Callat

関連する問題