- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在玩 window.onpopstate
,有件事让我有点恼火:
Browsers tend to handle the popstate event differently on page load. Chrome and Safari always emit a popstate event on page load, but Firefox doesn't.
我测试过,是的,在 Chrome 和 Safari 5.1+ 中 popstate 事件在页面加载时触发,但在 Firefox 或 IE10 中没有。
问题是,我只想监听用户点击后退或前进按钮的popstate
事件(或者历史是通过 javascript 更改),但不想在页面加载时做任何事情。
换句话说,我想将 popstate
事件与 page load 事件与其他 popstate
事件区分开来。
这是我到目前为止尝试过的(我使用的是 jQuery):
$(function() {
console.log('document ready');
setTimeout(function() {
window.onpopstate = function(event) {
// Do something here
}, 10);
});
基本上,我尝试将我的 listener
函数绑定(bind)到 popstate
足够晚,以便在页面加载时不绑定(bind),只是稍后。
这似乎可行,但是,我不喜欢这个解决方案。我的意思是,我如何确定为 setTimeout 选择的 timeout 足够大,但又不会太大(因为我不想让它等待太多)。
我希望有更聪明的解决方案!
最佳答案
在 popstate
事件处理程序中检查 event.state
的 bool 真值:
window.addEventListener('popstate', function(event) {
if (event.state) {
alert('!');
}
}, false);
为确保这会起作用,始终在调用 history.pushState()
或 history 时指定一个非
。另外,考虑使用包装库,如 History.js跨浏览器提供一致的行为。null
状态参数.replaceState()
关于javascript - 如何在页面加载时忽略 window.onpopstate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15896434/
我想了解 HTML5 历史对象。这是我开始的一个简单示例。 function addDialog(){ document.getElementById('d').style.
我正在使用 window.onpopstate 事件处理程序来监听后退和前进浏览器按钮事件。我的代码看起来像这样: componentDidMount() { window.onpopstat
我有一个页面,其中使用 AJAX 更改内容,并使用 History.pushstate 更新 URL。经过一些更新后,在它们之间来回移动也可以正常工作,这要归功于 window.onpopstate。
我有一个 onpopstate 事件的监听器。我想获得历史记录,而无需穿越历史。我可以执行 history.forward() 并获取状态,但这会导致我不想看到的副作用。 window.addEven
这是我的代码: function pushState() { ...snip... (SelectedMenuID has a value of 8) var stateObj = {
我正在这个网站上工作:http://calebg.me/ 要重现该问题,请单击几个链接:项目、研究、简历、联系方式 window.history.length 应为 5。 按后退按钮将按预期加载“/r
在学习使用 History API 之后,我正在尝试实现 History.js。但是我的 popstate 不再工作了。 在 History.js 中使用什么作为 onpopstate?在历史 API
我需要为一个应用程序使用 History API。我的问题是一些“home”jQuery 插件已经为 popstate 实现了一个事件 一个独特的 View 可能有多个 popstate 事件? 最佳
我正在使用新的 HTML5 onpopstate 事件。使用 Firefox 4,window.onpopstate 事件在页面加载时触发,而在 Webkit 中,情况似乎并非如此。 哪个是正确的行为
我正在玩 window.onpopstate,有件事让我有点恼火: Browsers tend to handle the popstate event differently on page loa
我正在尝试添加 window.onpopstate在我网站上的一个页面上,但什么也没发生。我把这个脚本放在页面上: window.addEventListener('popstate', fun
我有一个网站,有 4 个主页:index、somepage、someotherPage 和 LastOtherpage。它们有不同的名称,例如index.php、food_and_health.php
我希望我的脚本在散列更改或用户浏览其历史记录时触发一个函数。当我将这两个事件关联到同一个函数时,事件 onpopstate 和 onhashchange 都会在散列更改时触发,从而对我的函数进行两次调
我正在制作一个移动优化的网站,该网站具有全屏对话窗口,当您“单击”页面上的某些元素时,这些窗口会打开。这些窗口实际上只是动画到位的 div。 如果用户在其中一个对话框窗口打开时按下浏览器后退按钮,我希
我有一个 site它使用带有 pushState() 方法和 onpopstate() 处理程序的 ajax 导航。 当第一次访问主页时,我显示一个默认内容(没有ajax)。 当有人离开默认页面然后“
首先,我不完全确定我正在做的或期望的是正确的。似乎没有太多关于此的文档,但我读过的内容表明这应该有效。 我在尝试使用 history.pushState 时遇到了一些问题,所以我最终制作了一个演示页面
我正在使用 pushState 为我网站上的 ajax 内容创建有意义的 url。我想在用户点击前进或后退按钮时刷新 ajax 内容。然而,我遇到了问题,因为 chrome(正确地)在“历史遍历”(前
我正在尝试拦截浏览器中后退按钮的点击。在 React 组件中,我这样做: componentWillMount() { /* also tried componentDidMount() */
我正在使用 AJAX 刷新页面上的内容,因此尝试使用 HTML5 中的历史记录 API。除了 Google Chrome 之外,我在所有浏览器中都可以正常工作。以下代码- /** * Reloads
如果用户单击前进/后退按钮时出现未完成的 AJAX 调用,我将使用以下代码abort()。中止调用一切都很好,但之后对该函数的 future 调用将不起作用。当我尝试在中止后调用 swapConten
我是一名优秀的程序员,十分优秀!