VUE 도메인 간 통신 IFRAME 삽입

보다 편리한 개발을 수행에 VUE을 안내하는 .html 파일에 iframe을 찾을 바이두지도를 사용하여 최근 vue3 프로젝트는 다음 온라인 관련 정보를 그릴 아래에 요약되어 있습니다.

1. 어떻게 뷰 조립 도입은 iframe?

<template>
  <div class="act-form"> <iframe :src="src"></iframe> </div> </template> <script> export default { data () { return { src: '你的src' } } } </script>
如上,直接通过添加iframe标签,src属性绑定data中的src,第一步引入就完成了

2, 어떻게 VUE은 iframe 객체를 얻고, 창은 iframe 내에 객체가?

在vue中,dom操作比不上jquery的$('#id')来的方便,但是也有办法,就是通过ref
<template>
  <div class="act-form"> <iframe :src="src" ref="iframe"></iframe> </div> </template> <script> export default { data () { return { src: '你的src' } }, mounted () { // 这里就拿到了iframe的对象 console.log(this.$refs.iframe) } } </script>

개체 만이 일이 iframe을 전달받을 있기 때문에 그런 객체 창은 iframe을 얻을 수 있습니다

 
<template>
  <div class="act-form"> <iframe :src="src" ref="iframe"></iframe> </div> </template> <script> export default { data () { return { src: '你的src' } }, mounted () { // 这里就拿到了iframe的对象 console.log(this.$refs.iframe) // 这里就拿到了iframe的window对象 console.log(this.$refs.iframe.contentWindow) } } </script>

3, VUE는 방법은 iframe에 정보를 전송하는 방법?

通过postMessage,具体关于postMessage是什么,自己去google,

我的理解postMessage是有点类似于UDP协议,就像短信,是异步的,你发信息过去,但是没有返回值的,只能内部处理完成以后再通过postMessage向外部发送一个消息,外部监听message

为了让postMessage像TCP,为了体验像同步的和实现多通信互不干扰,特别制定的message结构如下
{
  cmd: '命令',
  params: {
    '键1': '值1',
    '键2': '值2' } }

이 메시지의 목적은 cmd를 구별한다

특정 코드는 다음과

<template>
  <div class="act-form"> <iframe :src="src" ref="iframe"></iframe> <div @click="sendMessage">向iframe发送信息</div> </div> </template> <script> export default { data () { return { src: '你的src', iframeWin: {} } }, methods: { sendMessage () { // 外部vue向iframe内部传数据 this.iframeWin.postMessage({ cmd: 'getFormJson', params: {} }, '*') }, }, mounted () { // 在外部vue的window上添加postMessage的监听,并且绑定处理函数handleMessage window.addEventListener('message', this.handleMessage) this.iframeWin = this.$refs.iframe.contentWindow }, handleMessage (event) { // 根据上面制定的结构来解析iframe内部发回来的数据 const data = event.data switch (data.cmd) { case 'returnFormJson': // 业务逻辑 break case 'returnHeight': // 业务逻辑 break } } } </script>

네, 어떻게 iframe이 VUE에서 외부로 메시지를 보내려면?

이제이 버튼을 클릭하여 "iframe을에 메시지를 보내"메시지가 외부 VUE에서 iframe을 보냈습니다

{
  cmd: 'getFormJson',
  params: {}
}

어떻게 iframe이 그 안에이 정보를 다루는?

<!DOCTYPE html>
<html lang="en"> <head> <meta charset="utf-8"> <title>iframe Window</title> <style> body { background-color: #D53C2F; color: white; } </style> </head> <body> <h1>Hello there, i'm an iframe</h1> <script> // 向父vue页面发送信息 window.parent.postMessage({ cmd: 'returnHeight', params: { success: true, data: document.body.scrollHeight + 'px' } }, '*'); // 接受父页面发来的信息 window.addEventListener("message", function(event){ var data = event.data; switch (data.cmd) { case 'getFormJson': // 处理业务逻辑 break; } }); </script> </body> </html>

보내기가 내부 해결 된 지금까지 정보를 수신, 외부 트랜시버도 해결되었습니다, 질문을 해결하기 위해 이동합니다.

 

추천

출처www.cnblogs.com/apex-wzw/p/12586164.html