忽略Safari's初始页面加载popstate
Ignore Safari's Initial Page Load popstate
我使用pushState,并根据当前页面的history.state生成popstate事件的页面视图。
如果没有历史记录,请声明我(希望)重新加载文档。
window.onpopstate = function(event) {
if( window.history.state !== null ){
// page was ajax created and history created by pushState
// recreate with ajax
}
else{
// page was loaded from server normally
document.location.reload()
}
}
问题是Safari在初始页面加载时触发popstate事件。Chrome和Firefox在后退/前进浏览器按钮上弹出popstate。
我想忽略Safari上的初始加载popstate事件(理想情况下没有setTimeout和浏览器检测)。
此外,该网站是一个混合链接-有些会触发pushState,有些会从服务器正常加载-因此,如果用户在导航历史记录中浏览了十页并单击后退按钮,则历史记录将混合有pushState页面和非pushState页面。
我已经解决了将从window.history.state.order
获得的初始订单值保存在变量中的问题。当打开popstate事件被触发时,先前存储的值将与当前订单值进行比较。如果它们相同,则无需执行任何操作(您必须忽略Safari触发的初始popstate值)。在这里你可以看到和示例:
var initial_oder = window.history.state.order || 0;
window.onpopstate = function(event) {
if( window.history.state !== null && window.history.state.order !== initial_order){
// page was ajax created and history created by pushState
// recreate with ajax
}
else{
// page was loaded from server normally
document.location.reload()
}
}
希望得到帮助!
相关文章:
- 如何使用url加载程序在webpack中导入多个图像
- 如何在生成下载文件时显示加载动画
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- 无法在通过jQuery的ajax加载的页面中执行javascript
- Emberjs应用程序加载在除Index之外的所有路由上
- 在chrome.tabs.onCreated之后加载HTML页面
- 单击F5时如何停止页面加载
- HTML5音频加载和播放获胜'我不能在iPad上工作
- 跟踪在页面加载时应用内联样式的JavaScript
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- jQuery Lazy加载动画滚动
- Html页面上的多个Base64图像和平滑加载
- 如何创建带有插槽的vue js组件预加载程序
- Webpack/Rect:遵循egghead.io教程,但出现错误:您可能需要一个合适的加载程序来处理此文件类型
- 如何使该数据在所有元素中加载
- Chrome扩展没有't在重新加载之前考虑期权价值
- 使用javascript在Flash中加载外部图像
- Ajax文件加载和<输入>文件加载
- 忽略Safari's初始页面加载popstate
- html5历史导航:除了页面加载之外,没有触发popstate