当前HTML页面的卸载函数是否可以访问浏览器的下一个请求的URL

问题描述:

由于Html代码驻留,直到新的url请求的响应没有到来,然后浏览器调用BeforeUnload和Unload函数。当前HTML页面的卸载函数是否可以访问浏览器的下一个请求的URL

这意味着在浏览器中的任何地方,网址位于已卸载当前网址的位置。那么是否有任何方法可以在Unload函数中获取该(新)URL?

其实我的方案是,我想弹出提供其他选项时弹出,当用户刚刚击中另一个URL不类似于我们的域名,表明他想从我们的网站出去。

+2

不,不可能读取下一个文档的位置。 – 2012-01-12 20:09:21

否 - 您无权访问此内容。 可以所做的是捕获所有可能导致您离开页面的元素的单击事件,然后将它们的URL存储在全局变量中。然后,您可以在“未装载”前获得该值。

这显然只适用于您网页上的元素。如果用户在地址栏中键入一个URL,那么您就无法捕获该地址。

+1

如果你使'卸载'代码使用一个值,这个值不会让用户离开,那么它也会捕获地址栏的退出(虽然它不会给出URL) – Tim 2012-01-12 20:13:54

+0

你失去了我 - 为什么你会改变价值与不让用户离开的元素? – Archer 2012-01-12 20:22:04

+0

这样,你知道什么时候不显示弹出窗口,并且你认为每一个动作都应该显示弹出窗口 - 这将包括当用户关闭窗口,在地址栏中输入一个地址等。 – Tim 2012-01-12 21:34:18

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

您可以附加一个事件处理程序到您的窗体和链接,以便您可以通过使用其中一个来确定用户是否正在离开页面。不过,您不能通过书签判断用户是否转到网站上的其他页面,然后输入网址,点击后退等。

进行全局JS值类似 var supressPopup = false;

然后,让所有的外部链接的还包括设置这个布尔到true的方法(即javascript:supressPopup=true;location.href='newurl.html'(这是一个丑陋的方式来做到这一点,只是你可以使用一个脚本,扫描所有网页的<a>标签,并增加了onClick事件的示例 - 如果hrefhttp开始)

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

+0

这不会给出外部文件的URL,但它会告诉你*如果*它不是*外部文件。 – Tim 2012-01-12 20:14:43