Перед тем, как связать меня, я прочитал такие вопросы, как Как мне остановить загрузку страницы (навигацию) в JS? , но они касаются HTML4 и ниже. Я хочу получить ответ, который использует атрибут события HTML5 onunload
. Я также хочу, чтобы это было как можно более чисто, то есть без внешних библиотек или плагинов, таких как jQuery или Flash, и только с использованием стандартизированного кода ( PURE HTML, CSS и JavaScript, ничего не зависящего от платформы).
Прежде чем вы скажете мне использовать onbeforeunload
, обратите внимание, что это НЕСТАНДАРТ , и, следовательно, не соответствует моим критериям, как описано выше. Он НЕ работает во всех браузерах, особенно в тех, которые были сделаны до того, как IE его реализовал.
Вопрос
На моем сайте у меня есть несколько музыкальных проигрывателей, и, если какой-либо из них воспроизводится, когда пользователь пытается отойти от страницы, я хочу открыть диалоговое окно, гарантирующее, что они намеревались это сделать, и чтобы они поняли, что это остановит аудиопоток, и если они выберут «да» или «ОК», он продолжит навигацию, но если они нажмут «нет» или «отмена», он останется на той же странице и продолжит воспроизведение звука без перерыва. , Как использовать 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>
Рабочий пример