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

问题描述:

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工作但不是无处不在

除非调用标记函数,否则window.location.href被替换为当前url。

谢谢你的时间。

+0

“IE 7和Firefox和Opera 10.6”...什么时候它不起作用? – AGoodDisplayName 2010-10-25 20:39:11

+0

它不适用于Chrome或Safari。 – 2010-10-25 20:41:43

+0

Chrome或Safari中的“它不起作用”是什么意思? – 2010-10-26 03:57:14

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

这是这里的问题:

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

如果你的令牌被设置,那么用户将什么都看不到,他们会离开页面。否则,这将提示用户确定他们真的想离开该页面。

的几个注意事项:

  • 提示看起来在不同的浏览器不同(的措辞是不同的)。我会尝试一下,以确保您的字符串看起来确定与提示的其余部分。
  • 这并不妨碍用户离开。这只会提醒用户他们应该做一些不同的事情。无法可靠地防止用户表单离开页面。
  • 除此之外,您应该处理用户会话结束的事件(在服务器上)并在此时释放锁。
+0

我猜想这是更大块代码的一部分 - 他说它可以在IE 7,Firefox和Opera中运行。如果出现语法错误,它根本不起作用。 – 2010-10-25 20:38:40

+0

是的,我清理了一些。该脚本执行,没有错误,我可以警告的window.location更换。由于某些原因,Chrome和safari似乎可以看到新的window.location.href,但它们不适用。 – 2010-10-25 20:43:55

+0

我试了window.location.href = window.location.href;它在IE7,Firefox,但不是铬或Safari浏览器。我真的不在乎野生动物园这么多。 – 2010-10-25 21:02:00

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

if (where_to== true) 
{ 

    alert(window.location); 

    window.location.href = window.location; 

} else { 

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

} 

请填写我们与您的代码,你似乎缺少一些呢?

编辑到您的编辑:尝试删除该提醒。有时警报可能会导致问题,所以它可能会阻止您设置window.location.href