Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 窗口。位置工作,但不是无处不在_Javascript - Fatal编程技术网

Javascript 窗口。位置工作,但不是无处不在

Javascript 窗口。位置工作,但不是无处不在,javascript,Javascript,此功能适用于IE7、firefox和opera 10.6。它不允许加载不同的页面,除非用户单击调用令牌函数的链接或按钮 除非调用令牌函数,否则window.location.href将替换为当前url 谢谢您的时间。您的语法混乱。还有太多的其他声明 这就是问题所在: var where_to = confirm("You have locked this record. You can only leave by clicking cancel."); if (where_to== true)

此功能适用于IE7、firefox和opera 10.6。它不允许加载不同的页面,除非用户单击调用令牌函数的链接或按钮

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


谢谢您的时间。

您的语法混乱。还有太多的其他声明

这就是问题所在:

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;
 }
编辑

根据您的评论,听起来您正试图这样做:您希望能够阻止用户离开页面,除非他们通过单击“取消”完成此操作

在这种情况下,应该使用
onbeforeunload
事件。这是,这是关于这次活动的

其思想是,每当用户试图离开页面时(即使只是关闭浏览器或在地址栏中键入其他地址),都会调用此函数

功能有限。您只能返回一个字符串。如果用户点击“取消”,浏览器将使用此按钮提示用户,然后用户将停留在页面上。他们可以点击OK继续离开页面。虽然只能返回字符串,但不必返回。您可以检查条件,并且仅当条件通过时才返回字符串。看看这个例子:

} else {
  //alert(tokenset);
  alert('You have passed the token test');

}
如果设置了令牌,那么用户将什么也看不到,他们将离开页面。否则,这将提示用户确保他们确实想要离开页面

需要注意的几点:

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

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

      window.onbeforeunload = function () {
          if (MyTokenIsNotSet) {
              return 'You have not released the lock';
          }
      };
      
      请填写您的代码,您似乎遗漏了一些代码


      编辑到您的编辑:尝试删除警报。有时警报可能会导致问题,因此可能会阻止您设置
      window.location.href

      我猜这是更大代码块的一部分-他说它在IE 7、Firefox和Opera中工作。如果有语法错误,它根本就不会工作。是的,我清除了一些。脚本执行,没有错误,我可以在窗口外发出警报。位置替换。似乎出于某种原因,chrome和safari可以看到新的window.location.href,但他们没有应用它;它可以在ie7、firefox中使用,但不能在chrome或safari中使用。我真的不太在乎safari。与其将href更改为当前页面,不如单击一个链接,而不是将href更改为变量中的内容,然后单击“链接”或“返回”按钮。查看我修改的答案。我认为这会有帮助。“IE 7、firefox和opera 10.6”…什么时候不起作用?它在Chrome或Safari中不起作用。你说的
      在Chrome或Safari中不起作用是什么意思?那代码中没有一点逻辑!
      
      if (where_to== true)
      {
      
        alert(window.location);
      
        window.location.href = window.location;
      
      } else {
      
        alert('You have passed the token test');
      
      }