'位置改变后'用户按下后退按钮时未触发事件

时间:2017-02-28 14:55:56

标签: javascript polymer

我正在尝试侦听位置何时更改,以便我可以向我的服务器发出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>

1 个答案:

答案 0 :(得分:1)

当按下后退按钮时,它不是触发但是popstate事件的位置更改事件,因此您需要收听这两个事件。检查铁位置here第146-147行

中的示例