<template>
<div class="act-form">
<iframe
:src="src"
ref="iframe"
frameborder="no"
align="middle"
width="100%"
height="600px"
scrolling="auto" />
<el-button @click="sendMessage">向iframe发送信息</el-button>
</div>
</template>
<script>
export default {
data () {
return {
src: '',
iframeWin: null,
isLoaded: false
}
},
created () {
this.src = 'https://odp.oa.com'
//获取iframe
var oIframe=document.getElementsByTagName('iframe')[0];
//获取iframe中的元素
var oText=oIframe.contentWindow.document.getElementById('navContent');
//改变iframe中元素的属性
oIframe.contentWindow.document.getElementById('navContent').style.color='red';
},
mounted () {
// 在外部vue的window上添加postMessage的监听,并且绑定处理函数handleMessage
window.addEventListener('message', this.handleMessage)
this.iframeWin = this.$refs.iframe.contentWindow
},
methods: {
sendMessage () {
console.log(this.iframeWin, 1111111)
this.iframeWin.postMessage({
cmd: 'getFormJson',
params: {}
}, '*')
},
async handleMessage (event) {
// console.log(event, 222222)
const data = event.data
// console.log(data, 333333)
switch (data.cmd) {
case 'returnFormJson':
break
case 'returnHeight':
break
}
},
async enroll (data) {
console.log('4444444')
}
}
}
</script>
<template>
<div class="act-for