Element UI 官网菜单点击不触发路由变化监听问题?-灵析社区

销售经理537

为什么 [https://element.eleme.cn/#/zh-CN/component/checkbox](https://link.segmentfault.com/?enc=ToYLqbQnCcCjtQm1AfsEdQ%3D%3D.B8qnn4pd2YXB%2Bq3%2FA1tgLACfnSOuj6rxEuC3sJNq5pD%2FOlHql2P2tFpE5YTfV4brcYFgL5mEO89wW4zR3t8Wpg%3D%3D) 给 element ui 官网添加 window.addEventListener( "hashchange", function () { console.log("The hash has changed!"); }, false, ); 监听路由变化的函数, 点击左侧的菜单监听不到, 非要到控制台使用 window.location.hash = "#/zh-CN/component/cascader" 才能触发路由变化的函数,而点它自己的菜单却不能触发 希望点它自己的菜单也能触发路由变化的函数

阅读量:154

点赞量:0

问AI
因为"router"是通过"history.pushState"来改url的。 «注意,pushState() 从未引起 hashchange 事件的触发,即使新 URL 与旧 URL 仅在 hash 上不同。 —— "MDN" (https://link.segmentfault.com/?enc=h1n8E3ecS87k2Z7wAkAnPw%3D%3D.qrKn3VFHEfNPH3at77MLiJS8k9glhBiUQH7D7BehOlB%2BDjNWoAoJT7XfCBHTKo7rXDzGjY2QXI0plIuC86qyGv%2BIapTDqOjH8tpSyxJkWNS%2BVQJfTiW2U2S93EkF1id7)» 所以你想监听到url修改需要重写"pushState"然后派发事件: var pushState = history.pushState; history.pushState = (...args) => { window.dispatchEvent(new HashChangeEvent()); pushState(...args) }