我们可以访问主流HTML页面中浏览器下一次请求的URL吗;s卸载功能

Can we access the URL of next request of browser in prevailing HTML page 's unload function

本文关键字:请求 一次 URL 功能 卸载 访问 HTML 浏览器 我们      更新时间:2023-09-26

由于Html代码一直存在,直到新的url请求没有响应。然后浏览器调用BeforeUnload和Unload函数。

这意味着在浏览器中的任何位置,url都位于卸载当前url时被击中的位置。那么,有什么方法可以在Unload函数中获得(新的)URL吗?

事实上,我的场景是,当用户刚刚点击另一个与我们的域不相似的URL时,我想打开弹出窗口来提供其他选项,表明他想离开我们的网站。

否-您没有访问权限。可以为所有会导致您离开页面的元素捕获点击事件,然后将它们的URL存储在全局变量中。然后,您就可以在"加载之前"获得该值。

这显然只适用于页面上的元素。如果用户在地址栏中键入一个URL,那么你就无法捕捉到它。

不,这将是一个严重的安全漏洞。

您可以将事件处理程序附加到表单和链接,这样您就可以通过使用其中一个来判断用户是否要离开页面。你无法判断用户是否通过书签、键入URL、点击返回等方式转到你网站上的另一个页面。

使全局JS值类似var supressPopup = false;

然后,让你的所有外部链接也包括一个方法,将这个布尔值设置为true(即javascript:supressPopup=true;location.href='newurl.html'(这是一种很糟糕的方法,但只是一个例子-如果href不是以http开头,你可以使用一个脚本扫描页面的所有<a>标记,并添加一个onClick事件)

然后,在您的unload代码中,检查supressPopup;如果它是假的,显示你的弹出窗口。