【问题标题】:Preventing user from going back in a browser window阻止用户返回浏览器窗口
【发布时间】:2019-05-03 22:41:51
【问题描述】:

有人可以解释一下这段代码的工作原理吗?

function preventBack(){window.history.forward();} 
setTimeout("preventBack()", 0); 
window.onunload=function(){null};

【问题讨论】:

  • 你需要帮助理解哪一部分?
  • 只要你不想阻止用户返回。
  • 我想知道整个代码执行时的流程

标签: javascript back-button


【解决方案1】:
window.history.forward();

forward() 方法加载历史列表中的下一个 URL,这与在​​浏览器中单击“转发按钮”相同。如果你执行window.history.back(),那么你会回到上一页。

setTimeout(preventBack(), 0); 

这里的 setTimeout 函数每 0 毫秒执行一次 preventBack() 函数(如此迅速)。因此,它将继续执行代码,不给用户任何时间按下后退按钮。

因此,用户将无法返回。

顺便说一句,函数名不能用双引号。

window.onunload=function(){null};

这意味着 {} 内的代码将在用户离开页面之前执行(为 null)。

【讨论】:

  • window.onload=function(){null};的要求是什么
  • 如果没有代码可以执行,那有什么用呢?如果我删除“window.onuload”部分,那么脚本不会工作。 setTimeout(preventBack(), 0);立即调用还是只执行一次?
  • 它将继续执行 preventBack() 无限次(直到您关闭页面)。如果你运行 setTimeout(preventBack(), 1000);然后它将每 1 秒执行一次
  • 如果它无限地执行,那么如果我从另一个页面返回到该页面(在其中实现了代码),那么我必须立即自动转发到我返回的页面吗? Dosent`t setInterval() 做同样的工作?
  • setTimeout 仅在指定时间(以毫秒为单位)之后触发一次。 setInterval 触发多次,至少间隔指定时间(可以少得多,尤其是在窗口/选项卡不活动的情况下)
猜你喜欢
  • 2015-05-05
  • 2020-06-06
  • 2016-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-27
  • 1970-01-01
  • 2010-10-01
相关资源
最近更新 更多