我找到了许多代码来检测浏览器的关闭按钮,但是在调用close选项卡时我得到了一个事件。我只想获得主关闭按钮事件以提醒用户是否留在此页面中。我找到了这段代码。
<script type="text/javascript">
window.onbeforeunload = function (evt){
var message = 'Are you sure you want to leave?';
if (typeof evt == 'undefined') {
evt = window.event;
}
if (evt) {
evt.returnValue = message;
} return message;
}
</script>
它会提醒用户在点击关闭标签时关闭或停留。
现在,我想检测主浏览器关闭事件。发现关闭事件也用于标签关闭。
任何人都可以帮我解决这个问题吗?
答案 0 :(得分:6)
浏览器级事件不能直接用于页面级JavaScript。某些事件具有从浏览器到页面的等价物,而有些事件则没有。这是出于安全考虑。
关闭浏览器的标签是浏览器级事件。该页面会通知unload
事件正在发生。该页面不知道我们是否正在经历“刷新”,或“导航到另一个链接”,或者该选项卡是否已关闭,或者整个浏览器是否已关闭或某些浏览器插件是否已崩溃。
页面卸载事件也不知道卸载时是否还有打开的窗口/标签。有些浏览器甚至可能没有标签(或窗口)的概念。浏览器级别事件是浏览器开发人员和插件开发人员关心的问题。页面级事件是您关注的问题。
可以捕获点击事件,并且可以抑制默认(页面导航)行为,并将其替换为完全不同的行为。
大多数unload
事件被限制,他们不允许您替换默认行为,他们只允许您询问用户是否要通过确认对话框离开或停留(具有一些可配置的标题/文字,但没有HTML)。如果用户拒绝您,则无法再控制该页面 - 完成,终止,标签已关闭。
如果您想确保用户不会通过导航链接或提交表单去任何地方,那么您需要捕获每个相应的事件。关闭标签和窗口不是你的问题。