当前位置:   article > 正文

vue项目通过<iframe>嵌套静态html项目,并实现数据交互_vue 项目里面嵌套html项目

vue 项目里面嵌套html项目

记录一下新项目集成老项目过程中产生的问题,需要vue项目实现引用HTML,并且实现vue页面可以传递数据到HTML页面,HTML页面也可以反向传递数据给vue页面

1、父页面(vue)传给子页面(html)

vue代码:

  1. //html部分
  2. <iframe :src="url" width="100%" @load="sendMessage" height="100%" ref="myIframe" id="myIframe" frameborder="0"></iframe>
  3. //js部分
  4. sendMessage(){
  5. // 获取自己的后端数据
  6. var Fdata = ''
  7. const iframe = document.getElementById('myIframe');
  8. iframe.contentWindow.postMessage(Fdata, '*');
  9. },

html代码:

  1. window.onload = function () {
  2. // 接收父页面传参
  3. window.addEventListener('message', (event) => {
  4. if (event.data.type === 'init') { //初始化数据
  5. // 接收到来自 iframe 的消息
  6. console.log(event.data,9090909)
  7. }
  8. if (event.data.type === 'pointValue') { //点表数据
  9. // 接收到来自 iframe 的消息
  10. console.log(event.data.value,666)
  11. }
  12. });
  13. };

2、子页面(html)传给父页面(vue)

父页面代码:

  1. mounted() {
  2. // 获取子页面传输数据
  3. window.addEventListener('message', this.receiveChild);
  4. },
  5. methods: {
  6. //接收子页面数据
  7. receiveChild(e){
  8. if(e.data.type == "jsonData"){//
  9. console.log(e.data.jsonData,777,'接收到了数据')
  10. }
  11. },
  12. },

子页面代码:

  1. //html部分
  2. <button id="left_test" title="测试给父组件发布数据"><i class="layui-icon layui-icon-set">测试给父组件发布数据</i></button>
  3. //js部分
  4. // 测试给父组件发布数据
  5. document.getElementById("left_test").addEventListener("click", function (event) {
  6. let data = {
  7. jsonData: '测试json数据',
  8. type:'jsonData'
  9. }
  10. // 传参
  11. window.parent.postMessage(data, '*')
  12. });

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号