0

ユーザーが実際にページを離れたときにページ コンテンツをフェードアウトするスクリプトを使用しています。

そのために、beforeunloadイベントを使用してみました。

サイトをナビゲートするときは問題なく動作しますが、Skype ボタンなどのアプリケーションの起動時にもトリガーされることがわかりました。まだページを離れたことがないのに...

早すぎるトリガーに対して onbeforeunload イベントを検証する最良の方法は何ですか?

私はまだ私のものを使うべきだと思います:

$(window).one('beforeunload', function() {
  // need to make some condition, if really leaving the page - execute
  $('html.nojs').stop(true,false).css('overflow','hidden').animate({opacity:0},2000);
});

しかし、私はいくつかの条件を使用する必要があります...ただ何も考えられません...

編集:

サイトへのリンクを削除しました

アニメーションは機能しますが、特定の製品に移動して Skype ボタンをクリックすると、うんちをすることがわかります...

EDIT2:

この問題の解決策は、アンロード前のイベントを引き起こした原因を検出することです。私が言ったように、その呼び出しの中にいくつかの条件を書くことによって。

イベントが外部アプリケーションの呼び出し (アプリケーションを開こうとする Skype ボタンなど) によってトリガーされたのか、それとも何か他のものだったのかを確認する方法を見つける必要があります。例:( リンクのクリック、ボタンの送信、スクリプト場所の変更、検索の開始、戻る/進む、ページの更新など)。

4

1 に答える 1

0

これは、この質問に対する受け入れられた回答です

window.onbeforeunload の使用時にユーザーの応答をキャプチャする

onbeforeunload イベントをトリガーした原因を知る必要がある場合は、グローバル変数を使用して、Skype ボタンをクリックしたときにそれを true に設定します。次に、onbeforeload イベント内で確認します。

于 2012-09-05T20:02:49.770 に答える