【问题标题】:How to access JavaScript href event that triggered beforeunload如何访问在卸载前触发的 JavaScript href 事件
【发布时间】:2012-08-22 01:53:28
【问题描述】:
【问题讨论】:
标签:
javascript
dom-events
mailto
onbeforeunload
【解决方案1】:
我已经准备好告诉您这是不可能的,因为 onbeforeunload 事件仅在您检查 event.target、event.originaltarget 等时报告已被窗口触发。但是,如果您覆盖 window.onclick,我们可以修改该方法以注册页面上最后单击的元素。然后,通过为 window.onbeforeunload 提供代码,我们可以指定新的行为来检查最后点击的元素的 href。万岁,啤酒!
这里的代码将为您提供您想要的确切信息,使用纯 javascript 并且无需在您的锚标记中添加任何内容。我还输入了 preventDefault() ,它会弹出“此页面要求您确认是否要离开 - 您输入的数据可能不会被保存。”确认框。希望这会有所帮助 - 您可以从这里弄清楚该怎么做。
<!DOCTYPE html>
<html lang="en">
<head>
<title>12065389</title>
<meta charset="utf-8">
<script type="text/javascript">
var last_clicked;
window.onclick = function(e) {
last_clicked = e.target;
return true;
}
window.onbeforeunload = function(e) {
var e = e || window.event;
if (last_clicked.href) {
alert(last_clicked.href);
e.preventDefault();
}
}
</script>
</head>
<body>
<a href="http://google.com">google</a>
</body>
</html>
【解决方案2】:
我可能会将事件附加到页面上的所有链接,而不是 beforeunload 事件。
类似:
$("a").click(function(evt) {
if($(this).attr('href').indexOf('http') == 0) {
if(confirm("Are you sure?")) {
//continue
} else {
evt.preventDefault();
}
}
}