再リンクする前に、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>