Window.location工作但不是无处不在

时间:2010-10-25 20:34:51

标签: javascript

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。它的作用是不允许加载不同的页面,除非用户单击调用令牌功能的链接或按钮。

除非调用令牌函数,否则window.location.href将替换为当前url。

感谢您的时间。

2 个答案:

答案 0 :(得分:2)

你的语法搞砸了。还有太多其他陈述。

这是问题所在:

} 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';
    }
};

如果设置了令牌,则用户将看不到任何内容,他们将离开页面。否则,这将提示用户确保他们真的想离开页面。

需要注意的一些事项:

  • 不同浏览器中的提示看起来不同(措辞不同)。我会尝试一下,确保你的字符串看起来没问题。
  • 这不会阻止用户离开。这只会提醒用户他们应该做些不同的事情。没有办法可靠地阻止用户表单离开页面。
  • 除此之外,您应该处理用户会话结束的事件(在服务器上)并在那时释放锁定。

答案 1 :(得分:0)

你有两个else语句和一个额外的}

if (where_to== true)
{

  alert(window.location);

  window.location.href = window.location;

} else {

  alert('You have passed the token test');

}

请用你的代码填写我们,你似乎错过了一些代码?

修改为您的修改:尝试删除提醒。有时警报可能会导致问题,因此可能会阻止您设置window.location.href