Vue 中使用 <iframe> 组件使用

1.在父界面中div中定义 <iframe> ,以及<iframe> 属性设置和子界面嵌入
<template>
    <div>
        <h1>父页面</h1>
        <div>{{ message }}</div>
        <iframe ref="myIframe" src="http://172.35.4.64:8080/hzs/newPgae.html" width="100%" :height="screenHeight"
            frameborder="0" allowfullscreen></iframe>
        
    </div>
</template>

<script>
export default {
    data() {
        return {
            message: '',
            screenHeight: document.body.clientHeight,
        };
    },
    mounted() {
        window.addEventListener('message', this.handleMessage);
    },
    beforeDestroy() {
        window.removeEventListener('message', this.handleMessage);
    },
    methods: {
        handleMessage(event) {
            // 确保消息来源是可信的
            if (event.origin === 'http://172.35.4.64:8080') {
                this.message = event.data.message;
            }
        }
    }
};
</script>
  • frameborder设置边框隐藏 allowfullscreen属性允许 iframe 支持全屏 src是本地地址(必须http地址路径,放置文件地址路径是加载不出来的)
2.子界面使用 window.parent.postMessage(...) 将消息发送到父页面
<!DOCTYPE html>
<html lang="zh">
  <head>
    <meta charset="UTF-8" />
    <title>子页面</title>
  </head>
  <body>
    <h1>子页面</h1>
    <button id="sendMessage">发送消息到父页面</button>

    <script>
      document.getElementById("sendMessage").addEventListener("click", () => {
        // 使用 postMessage 发送消息到父页面
        window.parent.postMessage({ message: "Hello from child!" }, "*");
      });
    </script>
  </body>
</html>
  • 子界面HTML文件放置位置
1.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容