当前位置: 首页 > 知识库问答 >
问题:

前端 - Element UI 官网菜单点击不触发路由变化监听问题?

汲永嘉
2024-03-31

为什么 https://element.eleme.cn/#/zh-CN/component/checkbox
给 element ui 官网添加

window.addEventListener(  "hashchange",  function () {    console.log("The hash has changed!");  },  false,);

监听路由变化的函数,
点击左侧的菜单监听不到,
非要到控制台使用 window.location.hash = "#/zh-CN/component/cascader" 才能触发路由变化的函数,而点它自己的菜单却不能触发

希望点它自己的菜单也能触发路由变化的函数

共有1个答案

岳硕
2024-03-31

因为router是通过history.pushState来改url的。

注意,pushState() 从未引起 hashchange 事件的触发,即使新 URL 与旧 URL 仅在 hash 上不同。 —— MDN

所以你想监听到url修改需要重写pushState然后派发事件:

var pushState = history.pushState;history.pushState = (...args) => {    window.dispatchEvent(new HashChangeEvent());    pushState(...args)}
 类似资料:
  • 本文向大家介绍AngularJS监听路由的变化示例代码,包括了AngularJS监听路由的变化示例代码的使用技巧和注意事项,需要的朋友参考一下 话不多说,我们下面直接来看实现的示例代码 【一】Angular 路由状态发生改变时可以通过' $stateChangeStart '、' $stateChangeSuccess '、' $stateChangeError '监听,通过注入'$locatio

  • 本文向大家介绍vue中监听路由参数的变化及方法,包括了vue中监听路由参数的变化及方法的使用技巧和注意事项,需要的朋友参考一下 在vue项目中,假使我们在同一个路由下,只是改变路由后面的参数值,期望达到数据的更新。 getDetail()方法中会用到this.id这个参数,在同一页面切换id的值,并不会触发vue的声明周期函数。 可以添加路由监听: ps:下面看下vue中监听路由参数变化的方法 在

  • elementui的el-input组件的源码中,suffix插槽绑定了一个点击事件@click="focus",focus事件中没有做其他的处理,只是点击的时候获取input焦点,会触发focus事件。如果当前的input处于已经获取焦点的状态,应该会先触发input的blur事件,再触发focus事件。 但是为什么没有触发blur事件呢?

  • ap.onNetworkChange(CALLBACK) 监听网络环境发生变化的事件。 CALLBACK 参数说明 和ap.getNetworkType()返回值一致 名称 类型 描述 networkAvailable Boolean 网络是否可用 networkType String 网络类型值 UNKNOWN / NOTREACHABLE / WIFI / 3G / 2G / 4G / WWA

  • 我已经有了监听连接变化的代码- 我用这个代码检查互联网连接——互联网检查 但问题是,如果网络突然失去互联网连接,而没有任何连接变化,这个代码是无用的。是否有任何方法来创建广播接收器侦听器为互联网连接的变化?我有一个网络应用程序,突然的互联网连接变化会导致问题。

  • 2.url点击事件的监听 url点击事件的监听是指将访客和客服发送在聊窗中的链接ur的点击事件暴漏出来,用户可以自定义url打开方式(默认使用SDK内置Webview加载)。监听接口为OnUrlClickListener; 注册监听方法: Ntalker.getInstance().setOnUrlClickListener(OnUrlClickListener onMsgClickListene