我想在离开某些页面之前使用onbeforeunload向用户发送消息。 是否有可能知道他们应该在onbeforeunload事件中跳转到哪个网址?
由于
答案 0 :(得分:5)
是否有可能知道他们应该在onbeforeunload事件中跳转到哪个网址?
不,绝对不是。 onbeforeunload
事件仅告诉您该页面即将被卸载,但不是为什么。
答案 1 :(得分:2)
这取决于用户离开页面的方式。 如果他们在地址栏中输入网址 - 那么你就不走运了。据我所知,没有办法捕获地址栏跳转的网址。
如果他们点击页面上某处包含的链接 - 您可以使用click事件捕获网址,然后决定如何处理内容。
我提出了类似的问题
How can i get the destination url of a link on the web page in the javascript onbeforeunload event?
因为我有一个项目来修理批发订单。在填写订单的过程中,我的客户的客户将返回目录检查产品的详细信息页面,并在订单上放弃当前信息。
通过使用下面的代码(虽然我确定你可以在纯Javascript中创建相同的东西,但是如果必须的话),我可以告诉用户何时点击了一个链接,该链接将保留订单,然后给他们选项在新窗口/选项卡中打开链接或在当前窗口中加载URL并丢失其表单数据,或者只返回到表单。此代码适用于所有主流浏览器,至少是最近的版本。
$('body a').click(function(e) {
//if link references a page element
if ($(this).attr('href').charAt(0)=="#") {
return;
}
//check if link is to same window
var pathname = window.location.pathname;
var pathname2 = $(this).attr('href');
pathname2 = pathname2.replace(/^.+\.\//, '');
if (pathname.indexOf(pathname2) >= 0) {
//link clicked is contained on same page
//prevent page from getting reloaded & losing data
e.preventDefault();
e.stopImmediatePropagation();
e.stopPropagation();
return;
}
//link clicked on is another page
if (hasMerchandise) { //var to indicate user has items on order form
//give user options: leave page, open link in other page, stay, etc.
// $('.popupForm-handleExitRequest').click(); //roll your own code
//prevent page from getting reloaded & losing data
//in case user wants to cancel page change or open link in another window
e.preventDefault();
e.stopImmediatePropagation();
e.stopPropagation();
} else {
//load new page
$(this).removeAttr('target');
}
});