首先vue里面内嵌html文件必须存放在项目 public文件夹下,可以和vue里面index.html同级如图所示:
我这里的 draw_PLS.html存放的是内嵌的html,map.js则是HTML里面的js。
以我项目为例
1.首先在vue页面里面通过iframe 的形式引用 注意 ref的值和 name的值我这里保持一致了,接下来都会有用到。(注意src里面的路径要和项目的路径一致哦)
例:this.srcurl='http://192.168.0.0:9527/draw_PLS.html'
iframe ref="iframe" :src="srcurl" name="iframe" scrolling="no" style="width: 83%;height: 100vh;float: right;" frameborder="0"></iframe>
2.通过 声明一个iframes获取到iframe,然后添加一个name的属性,this.datavallist为我需要传递的数组,通过 iframes.postMessage 的方法进行传递。(cmd:'dian'用于做判断使用,可以不传)
let iframes =this.$refs.iframe.contentWindow;
iframes.name=this.datavallist
iframes.postMessage({cmd:'dian',data:this.datavallist})
3.在 draw_PLS.html 做如下操作
<script type="text/javascript">
var text
window.addEventListener ('message', function(event) {
console.log(event.data) //event.data获取传过来的数据
text=event.data.data
if(event.data.cmd==='dian'){ //event.data.cmd==='dian' 可以进行多次传参操作
//此处为需要执行的方法
}else{
//此处为需要执行的方法
}
</script>
这样就可以获取到啦。
:有什么地方不懂的可以找我共同进步,写的不够好还请多多包涵。