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