javascript - html5 popstate 事件无法在 chrome 和 ie 上触发

标签 javascript html google-chrome firefox browser-history

我正在这些浏览器中进行测试:

  • Chrome 43.0.2357.134 m
  • 火狐39.0
  • IE 11

我像这样添加了事件监听器

window.addEventListener("popstate", callback);

并编码以改变这样的状态

history.pushState(param, "#")

它在同一个 url 页面中工作,但从另一个 url 页面导航回来后,不会调用 popstate 监听器(但它在 Firefox 上工作)。

我不知道该怎么办。有解决办法吗???

最佳答案

您需要在初始页面加载时手动替换状态。 像下面这样的东西应该可以工作。

var firstState = { // your initial state
}

function initState() { 
    history.replaceState(firstState);
}

if (document.readyState === 'complete') initState();
else window.onload = initState;

关于javascript - html5 popstate 事件无法在 chrome 和 ie 上触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31578672/

相关文章:

javascript - 使用独生子女时如何避免悬停样式

javascript - 如何一键同时计算多个输入?

html - 背景图像 CSS 内联不起作用

html - <h1> 在 firefox 和 chrome 中小于 <h2>

javascript - 主干 Marionette 复合 View 渲染模板

javascript - 在javascript中,下面的代码是如何工作的

html - 如何使网页内容在浏览器调整大小时不被折叠或处置

javascript - 编辑内置 Chrome 书签管理器文件夹/子文件夹自动扩展?

javascript - 如何添加顶部填充以平滑滚动

html - 如何制作一个唯一的图像按钮?