vue项目通过Iframe引入本地html页面并实现通信

507 阅读1分钟

vue项目通过Iframe引入本地html页面并实现通信

1.关于路径的问题

需要在src同级的public文件夹中创建文件夹static文件夹将需要通信的html文件放到里面

image.png

完成此步骤之后可以将iframe路径设置为 /static/demo.html

 <iframe id="myIframe" src="/static/demo.html" frameborder="0"></iframe>

2.页面之间的通信问题

2.1 vue组件向html发送信息

vue中控制发送消息的代码

sendMsg2Html(){
    let data = '传递的信息'
    const iframe = document.getElementById("myIframe")
    iframe.contentWindow.postMessage(data,"*")
}

html中控制接收信息的代码

window.onload = function(){
    window.addEventListener('message',(event)=>{
        console.log("event---",event.data)
    })
}

2.2 html组件向vue发送信息

html中控制发送信息的代码

function setMessage2Vue(){
    let data = '传递的信息' 
    window.parent.postMessage(data,"*")
}

vue中控制接收消息的代码(dom加载时执行)

mounted(){
    window.addEventListener('message',(event)=>{
        console.log("event---",event.data)
    })
}