JavaScript正文onunload无法正常工作

时间:2011-04-13 15:38:49

标签: javascript html

您好我有以下代码:

function redirect(){
     window.location.href='logged_out_chat.php';
}

...在我的标题和以下正文标记中:

<body onunload="javascript:redirect();">

...当我在一台笔记本电脑上试用它时,它会重定向(当你点击任何链接时),但在我的其他笔记本电脑,台式机和笔记本电脑上,它会忽略重定向并转到你点击的任何链接上。 我花了好几个小时...都有相同的浏览器。我想知道是否有其他方法可以在用户点击链接等时重定向用户。

3 个答案:

答案 0 :(得分:4)

您期望会发生什么?

当我在浏览器中关闭您的页面时,您会将我重定向到您喜欢的页面吗?

这可以解决安全性和用户控制问题。当我关闭页面时,你不应该干扰页面。

士气不依靠onunload做任何不平凡的事情。

答案 1 :(得分:0)

当窗口卸载时,它会停止处理所有内容,这意味着ajax请求,待处理下载等,甚至冻结GIF动画。有些浏览器支持onbeforeunload,但我完全同意@Raynos你不能指望这个事件,因此使用它不是一个好的设计决定。

答案 2 :(得分:0)

您无法劫持onunload并重定向用户。这将阻止用户关闭浏览器,刷新页面或手动导航到其他站点。如果那是你想要做的,那你就不走运了。所有onunload都是好的,询问用户是否确定要离开页面。

但是,如果您试图让点击的链接转到其他位置,那很容易。永久更改链接:

myLink.href = 'logged_out_chat.php';

如果您想暂时更改链接,请添加一个稍后可以删除的点击处理程序:

function goToLoggedOutChat(e)
{
    e.preventDefault && e.preventDefault();
    e.returnValue = false;
    location.href = 'logged_out_chat.php';
}
mylink.onclick = goToLoggedOutChat;

重新启用链接:

mylink.onclick = null;

为页面上的每个链接执行此操作:

for (var i=0; i<document.links.length; i++)
{
    document.links[i].onclick = goToLoggedOutChat;
}