如何访问卸载前触发的JavaScript href事件
我想访问导致beforeunload事件的事件。具体地说,如果单击指向另一个页面的链接,我想知道beforeunload事件处理程序中的链接是什么 这样,我将根据URL的内容在beforeunload事件处理程序中执行不同的操作 例如“http:”或“https:”警告用户丢失未保存的更改;'mailto:'或'skype:'不警告用户,因为页面实际上不会被卸载 我正试图为这样一个问题找到一个好的解决方案:如何访问卸载前触发的JavaScript href事件,javascript,dom-events,mailto,onbeforeunload,Javascript,Dom Events,Mailto,Onbeforeunload,我想访问导致beforeunload事件的事件。具体地说,如果单击指向另一个页面的链接,我想知道beforeunload事件处理程序中的链接是什么 这样,我将根据URL的内容在beforeunload事件处理程序中执行不同的操作 例如“http:”或“https:”警告用户丢失未保存的更改;'mailto:'或'skype:'不警告用户,因为页面实际上不会被卸载 我正试图为这样一个问题找到一个好的解决方案: 我可能会将事件附加到页面上的所有链接,而不是beforeunload事件 比如: $("
我可能会将事件附加到页面上的所有链接,而不是beforeunload事件 比如:
$("a").click(function(evt) {
if($(this).attr('href').indexOf('http') == 0) {
if(confirm("Are you sure?")) {
//continue
} else {
evt.preventDefault();
}
}
}
我已经准备好告诉您这是不可能的,因为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>
12065389
上次点击的变量;
window.onclick=函数(e){
上次单击=e.target;
返回true;
}
window.onbeforeunload=函数(e){
var e=e | | window.event;
如果(上次单击的)。href{
警报(上一次点击的。href);
e、 预防默认值();
}
}