用户按下后退按钮时未触发'location-changed'事件



我正在尝试在位置更改时收听,以便我可以向我的服务器发出Websocket请求以更新页面上的状态。

我正在听 location-changed事件:

app.listen(window, 'location-changed', '_updateScreen');

如果我在页面上单击超链接,这将发射:

<a href="new/location/">My link</a>

但是,如果我单击浏览器上的后面按钮,它不会发射...这是一个错误还是我做错了什么?

<template is="dom-bind" id="app">
    <app-location route="{{route}}"></app-location>
    <app-route route="{{route}}" pattern="/:page" data="{{data}}" tail="{{tail}}"></app-route>
    <a href="new/location/">My Link</a>
</template>
<script type="module">
    "use strict";
    window.addEventListener('WebComponentsReady', (e) => {
        app._updateScreen = () => console.log('update');
        app.listen(window, 'location-changed', '_updateScreen');
    });
</script>

按下返回按钮时,不是在位置改变的事件,而是PopState事件,因此您需要收听两个事件。在此处查看铁地点中的示例146-147

最新更新