var where_to = confirm("You have locked this record. You can only leave by clicking cancel.");
if (where_to== true) {
alert(window.location);
window.location.href = window.location;
} else {
window.location.href = window.location;
}
此函数适用于 IE 7、firefox 和 opera 10.6。它的作用是不允许加载不同的页面,除非用户单击调用 token 函数的链接或按钮。
除非调用 token 函数,否则 window.location.href 将替换为当前 url。
感谢您的宝贵时间。
最佳答案
你的语法很困惑。 else 语句太多。
这就是问题所在:
} else {
//alert(tokenset);
alert('You have passed the token test');
}
编辑
根据您的评论,听起来这就是您想要做的事情:您希望能够阻止用户离开页面,除非他们通过单击“取消”来离开页面。
在这种情况下,您应该使用 onbeforeunload
事件。这是IE page ,这是 Mozilla page关于此次事件。
这个想法是,每当用户尝试离开页面时(即使只是关闭浏览器或在地址栏中键入其他地址),都会调用此函数。
功能有限。您只能返回一个字符串。浏览器使用它来提示用户如果他们点击取消,那么他们会留在页面上。他们可以点击“确定”并继续离开页面。虽然您只能返回一个字符串,但您不必这样做。您可以检查条件,并且仅在条件通过时返回字符串。看我的这个例子:
window.onbeforeunload = function () {
if (MyTokenIsNotSet) {
return 'You have not released the lock';
}
};
如果您的 token 已设置,那么用户将看不到任何内容,他们只会离开页面。否则,这将提示用户确保他们确实想要离开该页面。
需要注意的一些事项:
- 提示在不同的浏览器中看起来不同(措辞不同)。我会尝试一下,以确保您的字符串与提示的其余部分看起来没问题。
- 这不会阻止用户离开。这只提醒用户他们应该做一些不同的事情。没有办法可靠地阻止用户离开页面。
- 除此之外,您还应该处理用户 session 结束的事件(在服务器上)并在那时释放锁定。
关于javascript - Window.location 可以工作,但不是到处都有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4018626/