gpt4 book ai didi

javascript - 每当我执行推送状态时,Statechange 就会触发

转载 作者:可可西里 更新时间:2023-11-01 01:30:23 24 4
gpt4 key购买 nike

我正在使用 history.js 来处理后退按钮。在 history.js 中,每当我执行 pushstate 时,statechange 就会触发。为什么?

最佳答案

想补充一点,是的,这是 History.js 的预期行为。同时还有more discussions批评这种行为,因为它不是 W3C 标准,并且确实造成了一些困惑。

简而言之,回答您的问题:在 History.js 中,pushState() 函数最后是对 statechange 的调用。

此解决方案的

优点 是您可以更改(推送)新状态并让 onstatechange() 函数处理转换。 缺点 是您无法处理异常/或必须将它们写入 onstatechange 事件处理程序。

我个人更喜欢 W3C 的处理方式,因为您可以区分后退/前进按钮和 pushState。 History.js 维护者正在研究一个内部标志解决方案,使您能够更改此行为:

Notice how the above calls [pushstate-calls] trigger statechange events, if for some reason you do not want this to happen then inside your statechange handler you can use the following:

if ( History.getState().internal ) { return; }

*此功能目前正在开发中,只能与 History.js 的“开发”版本一起使用!希望这会在将来帮助其他人 :)

关于javascript - 每当我执行推送状态时,Statechange 就会触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8744487/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com