【问题标题】:Browser back button doesn't trigger javascript浏览器后退按钮不会触发 javascript
【发布时间】:2014-07-22 18:34:57
【问题描述】:

我正在尝试创建一个单页应用程序。

为了允许用户分享网站特定部分的链接,我通过在浏览器历史记录中插入条目来模拟导航。

问题是,当用户点击浏览器的后退按钮时,javascript 不会再次触发。有可能强行吗?


我在developer.mozilla.org 中找到了答案。 只需为“popstate”事件添加一个监听器:

window.addEventListener('popstate', function(event) {
 if (event.state) {
   myFunction();
 }
}, false);

“myFunction”将在每次活动历史条目更改时执行。

【问题讨论】:

  • 您需要添加更多详细信息吗?您是使用路由库还是尝试直接访问 html5 历史 api?
  • 我正在更改当前网址:window.history.pushState("Object", "Title", myUrl +"search=something");

标签: javascript html5-history


【解决方案1】:

不!

这就是答案!!!! 浏览器中有许多安全限制 - 必然如此,否则互联网会比现在更加混乱。 虽然 javascript 中提供了一些浏览器“返回”功能,但它们非常有限。 浏览器应该像第一次打开时那样加载页面,并且不会将数据从最近拉到过去。 一个典型的例子是返回时表单重新提交警告 - 一个简单的检查,即返回到上一页的步骤不能由页面代码控制,而是浏览器通过检查介入。 期望做任何更精细的事情会浪费你的时间。

【讨论】:

  • 这显然是不正确的,考虑到 HTML5 history API 之类的东西。
  • 哇冷静!我只是在几个月前尝试类似的事情时提供经验。浏览器是浏览器,而 javascript 不是 HTML5。最好的办法是在您去收集动作时将 AJAX 发送到数据库。不确定您所说的不合适是什么意思 - 我只是在 Q 中没有具体说明的情况下提供简单的经验。
  • @TimHigham 他们说的是在 JavaScript 中使用 HTML5 History API,您应该能够实现 OP 所说的。我的意思是,这是 AngularJS 路由的基础(使用哈希标签或历史 API)
猜你喜欢
  • 1970-01-01
  • 2017-06-29
  • 2011-06-17
  • 2023-03-08
  • 2014-04-17
  • 2022-01-07
  • 2018-07-11
  • 1970-01-01
  • 2013-03-02
相关资源
最近更新 更多