Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何访问卸载前触发的JavaScript href事件_Javascript_Dom Events_Mailto_Onbeforeunload - Fatal编程技术网

如何访问卸载前触发的JavaScript href事件

如何访问卸载前触发的JavaScript href事件,javascript,dom-events,mailto,onbeforeunload,Javascript,Dom Events,Mailto,Onbeforeunload,我想访问导致beforeunload事件的事件。具体地说,如果单击指向另一个页面的链接,我想知道beforeunload事件处理程序中的链接是什么 这样,我将根据URL的内容在beforeunload事件处理程序中执行不同的操作 例如“http:”或“https:”警告用户丢失未保存的更改;'mailto:'或'skype:'不警告用户,因为页面实际上不会被卸载 我正试图为这样一个问题找到一个好的解决方案: 我可能会将事件附加到页面上的所有链接,而不是beforeunload事件 比如: $("

我想访问导致beforeunload事件的事件。具体地说,如果单击指向另一个页面的链接,我想知道beforeunload事件处理程序中的链接是什么

这样,我将根据URL的内容在beforeunload事件处理程序中执行不同的操作

例如“http:”或“https:”警告用户丢失未保存的更改;'mailto:'或'skype:'不警告用户,因为页面实际上不会被卸载

我正试图为这样一个问题找到一个好的解决方案:

我可能会将事件附加到页面上的所有链接,而不是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、 预防默认值();
}
}