在Vue中的组件钩子函数mounted中,通过this.$refs和document.getElementById()无法获取组件或节点信息,

问题描述:因为页面的<iframe>是放到某个div下面的,div设置了v-show=false, 然后点击input事件设置为v-show属性为true后,再获取this.$refs无效。

解决方法:目前的解决方法是使用 setTimeout 来延迟获取,哈哈

setTimeout(() => {
  let backUrl = process.env.VUE_APP_MANAGE_URL + '/device/listswitch'
  window.document.getElementById('authShopIframe').contentWindow.postMessage("传递的值","*")
}, 500);

setTimeout(function(){
   this.$refs.authShopIframe.contentWindow.postMessage("传递的值","*")
},500)

根据其它网友们遇到的问题和解决方法,总结在mounted中使用this.refs

1、引用ref="XX"的组件不能采用懒加载的形式引入

2、this.refs只能获取在该组件的标签和组件(不能使用v-for、v-if、v-show等vue指令),不能获取组件内部的标签(即要填充插槽里的标签)