19

私たちの管理ポータルでは、教師がログアウトしたりブラウザ ウィンドウを閉じたりする前に、最新の PDF の指示をダウンロードするのを忘れがちです。周りを見回しましたが、探しているものが見つかりません。

次の目標を達成したいと考えています。

目標1

ユーザーがブラウザ ウィンドウを閉じる前に、「フォームをダウンロードすることを覚えていましたか?」というメッセージが表示されます。はい/いいえの2つのオプションがあります。はいの場合は閉じ、いいえの場合はページに戻ります。

目標 2

ユーザーが「ログアウト」ボタンをクリックする前に、上記と同じプロンプトが表示されます。

非常に基本的なコード (ブラウザを閉じると機能しない) での私の最初のパスは次のとおりです。

<!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>Untitled Document</title>

<script type="text/javascript">
function init() {
    if (window.addEventListener) {
        window.addEventListener("beforeunload", unloadMess, false);
    } else if (window.onbeforeunload) {
        window.onbeforeunload = unloadMess;
    };
}

function unloadMess() {
    var User_Message = "[Your user message here]"
    return User_Message;
}
</script>
</head>

<body onload="init();">
     hello this is my site
</body>
</html>

編集 - 新しい問題

以下に示す解決策は機能しますが、独自の問題もあります。

ユーザーがリンクをクリックしてフォームを実際にダウンロードすると、ページはユーザーがページを離れようとしていると見なし、エラー メッセージを表示します。また、いずれかのイベントが発生することを望みますが、必ずしも両方であるとは限りません。つまり、「ログアウト」ボタンを押すと、OnClick イベントが表示され、次にブラウザ プロンプトが表示されます。何か案は?

4

4 に答える 4

32

2017年更新

最新のブラウザはすべて、カスタム メッセージをサポートしなくなりました。

window.onbeforeunload = function(evt) {
   return true;
}

タブを閉じるためのこれ:

window.onbeforeunload = function(evt) {
    var message = 'Did you remember to download your form?';
    if (typeof evt == 'undefined') {
        evt = window.event;
    }
    if (evt) {
        evt.returnValue = message;
    }

    return message;
}

onClickログアウトボタンにイベントを使用します。

onClick="return confirm('Did you remember to download your form?');"
于 2010-05-27T17:12:31.233 に答える
2

これはあなたの問題の一部かもしれないと思います:

else if(window.onbeforeunload) {
  window.onbeforeunload = unloadMess;
};

「if」ステートメントのそのテストは、ハンドラー関数が既に存在する場合にのみ真になります。そのテストは、「ウィンドウ オブジェクトに 'onbeforeunload' プロパティがあるか?」という意味ではありません。これは、「ウィンドウの 'onbeforeunload' プロパティは現在 null ではないか?」という意味です。

どのブラウザでも、「onbeforeunload」を直接設定するだけで安全だと思います。

于 2010-05-27T17:27:07.360 に答える
1

のようonbeforeunloadな他のイベントと同様に、単に false を返してユーザーがページを離れないようにすることはできませんonclick。これにより、サイトを離れることができなくなります。

ただし、文字列を返すだけで、ブラウザは文字列を含む確認ダイアログを表示して、ユーザーが本当に離れたいかどうかを尋ねます。

于 2010-05-27T17:53:11.370 に答える
0

Pointy はブラウザのクローズ イベントについては正しいです。悪意のあるサイトがウィンドウを閉じるのを妨げていると想像してみてください?? したがって、彼らがあなたのサイトを閉鎖するのを防ぐことはできませんが、アラートを出すことはできます.

ログアウト ボタンに関する限り、それははるかに簡単です。

<a href="logout.html" onClick="return confirm('Did you remember to download your form?');">Logout</a>
于 2010-05-27T17:16:21.873 に答える