-2

再リンクする前に、JS でページのアンロード (移動) を停止するにはどうすればよいですか?などの質問を読みました。、ただし、HTML4 以下を扱います。HTML5 の event 属性を利用した回答が欲しいですonunload。また、これを可能な限り純粋なものにしたいと考えています。つまり、jQuery や Flash などの外部ライブラリやプラグインを使用せず、標準化されたコードのみを使用します ( PURE HTML、CSS、および JavaScript、プラットフォームに依存するものは何もありません)。

を使用するように指示する前に、それはNON-STANDARDであるため、上記の私の基準に適合しないonbeforeunloadことに注意してください。すべてのブラウザ、特に IE が実装する前に作成されたブラウザでは動作しません。

質問


私のサイトにはいくつかの音楽プレーヤーがあり、ユーザーがページから移動しようとしたときにいずれかのプレーヤーが再生されている場合は、ダイアログ ボックスをポップアップ表示して、ユーザーがこれを意図していること、およびこれにより再生が停止することを理解していることを確認したいと考えています。 「はい」または「OK」を選択するとナビゲーションに進みますが、「いいえ」または「キャンセル」をクリックすると、同じページにとどまり、オーディオを途切れることなく再生し続けます。JavaScript を使用して、使用せずにページのアンロードをキャンセルするにはどうすればよいONBEFOREUNLOADですか?

ここまでのコード


これまでのところ、次のコードがありますが、アンロードを停止する方法がわかりません:

<!DOCTYPE HTML><html>
<head>
    <script><!-- Loading Scripts -->
    function unloadTasks(){
        window.alert(":" + playing + ":");
        if (playing && !window.confirm("A podcast is playing, and navigating away from this page will stop that. Are you sure you want to go?"))
            window.alert("Here is where I will stop the page from unloading... somehow");
    }
    </script>
    <script><!-- Player Scripts -->
    var playing = false;
    function logPlay(){
        playing = isPlaying("e1audPlayer");
    }
    function isPlaying(player){
        return document.getElementById(player).currentTime > 0 && !document.getElementById(player).paused && !document.getElementById(player).ended;
    }
    </script>
</head>
<body onunload="unloadTasks()">
<audio id="e1audPlayer" style="width:100%;" controls="controls" preload="auto" onplaying="logPlay()" onpause="logPlay()">
    <source src="http://s.supuhstar.operaunite.com/s/content/pod/ADHD Episode 001.mp3" type="audio/mpeg"/>
    <source src="http://s.supuhstar.operaunite.com/s/content/pod/ADHD Episode 001.ogg" type="audio/ogg"/>
    Your browser does not support embedded audio players. Try <a href="http://opera.com/">Opera</a> or <a href="http://chrome.com/">Chrome</a>
</audio>
<a href="http://example.com/">Link away</a>
</body>
</html>

実施例

4

2 に答える 2

1

ユーザーにメッセージを表示するには、onbeforeunload を使用する必要があります。

于 2011-11-06T22:23:57.597 に答える
0

これを完全に防ぐことはできませんが、ポップアップを介してユーザーにリロードしてはならないことを通知できます。これは onbeforeunload ウィンドウ イベントで行われ、MDNで最もよく文書化されています。

これは、回答テキスト領域にテキストを追加してからページを離れようとすると、Stackoverflow とまったく同じように動作します。

于 2011-11-06T22:31:43.720 に答える