onpopstate可以监听到一个pushstate的事件吗【热度: 546】

关键词:popstate

onpopstate 事件只能监听到浏览器历史记录的前进和后退操作,无法直接监听到 pushStatereplaceState 的调用。这是因为 pushStatereplaceState 方法可以修改浏览器历史记录而不触发 onpopstate 事件。

但是,您可以在调用 pushStatereplaceState 之后手动触发 popstate 事件,来模拟类似的效果。示例如下:

// 监听 popstate 事件
window.addEventListener('popstate', function(event) {
  console.log('popstate event triggered');
});

// 调用 pushState 方法
window.history.pushState(null, null, '/new-url');

// 手动触发 popstate 事件
var popStateEvent = new PopStateEvent('popstate', { state: null });
window.dispatchEvent(popStateEvent);

在上述示例中,我们首先通过 addEventListener 方法监听 popstate 事件。然后,我们调用 pushState 方法来修改浏览器历史记录,并在之后手动创建一个 PopStateEvent 对象,并使用 dispatchEvent 方法来触发 popstate 事件。

这样就可以实现在调用 pushStatereplaceState 之后手动触发一个事件来模拟监听到 pushState 的效果。