在你重新链接我之前,我已经阅读了How do I stop a page from unloading (navigating away) in JS?之类的问题,但是他们处理的是HTML4及以下版本。我想要一个利用HTML5事件属性onunload
的答案。我也希望它尽可能地纯净,即没有外部库或插件,如jQuery或Flash,只使用标准化代码( PURE HTML,CSS和JavaScript,不依赖于平台)。< / em>的
在您告诉我使用onbeforeunload
之前,请注意它是 NON-STANDARD ,因此不符合我上述的标准。它不适用于所有浏览器,特别是那些在IE实现之前制作的浏览器。
在我的网站上,我有几个音乐播放器,当用户试图离开页面时,如果其中任何一个正在播放,我想弹出一个对话框,确保他们打算这样做并且他们明白这一点将停止音频流,如果他们选择“是”或“确定”,它继续导航,但如果他们点击“否”或“取消”,它将保持在同一页面上并继续播放音频而不会中断。 如何在不使用ONBEFOREUNLOAD
的情况下使用JavaScript取消页面卸载?
到目前为止,我有以下代码,但不知道如何停止卸载:
<!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>
答案 0 :(得分:1)
您应该使用onbeforeunload来提示用户输入消息。
答案 1 :(得分:0)
你无法完全阻止这种情况,但是可以通过弹出窗口通知用户他不应该重新加载。这是通过onbeforeunload窗口事件完成的,最好记录在MDN。
如果您在回答textarea中添加一些文本而不是尝试离开页面,这将与Stackoverflow中的行为完全相同。