Javascript popstate事件处理程序似乎无法工作
“popstate”事件处理程序有问题,这是我的代码:Javascript popstate事件处理程序似乎无法工作,javascript,Javascript,“popstate”事件处理程序有问题,这是我的代码: window.addEventListener("popstate", function (event){ if (event.state) { alert('abc') } }); // The data object is arbitrary and is passed with the popstate event. var dataObject = { createdAt: '2011-10
window.addEventListener("popstate", function (event){
if (event.state) {
alert('abc')
}
});
// The data object is arbitrary and is passed with the popstate event.
var dataObject = {
createdAt: '2011-10-10',
author: 'donnamoss'
};
var url = '/posts/new-url';
history.pushState(dataObject, document.title, url);
我希望这段代码在执行时会弹出一个警告框,但是什么也没发生
这里有什么问题吗
谢谢。
pushState
不要触发popstate
事件,只有单击后退/前进按钮(或使用退格)或调用history.back()
/history.go(n)
才会触发此事件
另外,在webkit浏览器中,页面的onload
事件后会触发popstate
事件,但Firefox和IE没有这种行为。不会
依照
请注意,仅调用history.pushState()或history.replaceState()不会触发popstate事件。popstate事件仅通过执行浏览器操作触发,例如单击后退按钮(或在JavaScript中调用history.back())
同样,根据popstate
事件在Chrome
中不会触发,当您调用pushState()
时,根据定义不会触发事件
在某些情况下,导航到会话历史记录条目时会触发popstate事件
此事件仅在导航到历史记录条目时触发,方法是按下后退/前进按钮或
历史记录。返回在中测试代码,.pushState()
事件似乎失败。用字符串替换变量允许我触发事件。@DJDavid98-这只意味着pushState
返回false
或undefined
。加载页面或调用history.pushState()时,会触发前面提到的popstate事件。对于后者,事件对象将包含一个状态属性,该属性保存给定给history.pushState()的数据对象。你能检查一下吗,plz,我引用了Javascript Web应用程序中的话?我读过,没有发现触发popstate
事件的任何步骤。昨天我正在做一个与历史api相关的主题,我确信pushState
不会触发任何popstate
事件。如果一个推送动作触发一个pop事件不是很奇怪吗?如果推送触发了pop,那么历史堆栈中还剩下什么?什么都没有?现在我从我的朋友那里借了一本Javascript Web应用程序书,是的,它说pushState()
会触发popstate
事件,但我认为这是这本书的一个错误,网络上没有其他资源证实这种行为。非常感谢御宅族,我本可以选择德里克作为他的快速回复,但最终选择了你的答案,因为你回答我问题的热情。谢谢。对于从History.js(你还记得吗?)迁移的用户来说,这可能会很奇怪,因为在History.js中总是触发statechange
事件。。。