实战iframe嵌套页面如何进行参数传递

实战iframe嵌套页面如何进行参数传递在开发中,偶尔会遇到需要在一个页面之中嵌套调用不同域名的项目进行展示,这时候就有一个问题,调用另外的项目的时候会需要一些参数,或者说是某些验证规则,但是我们的url传参又是有限制的,很多时候并不能完整的传过去我们需要的所有数据,所以在这里讲一下如何进行iframe父页面对子页面的参数传递(通信)父页面代码1、html部分<iframesrc=”https://xxx.xxx.xx”ref=”Frame”scrolling=”auto”></iframe>2、方法

大家好,欢迎来到IT知识分享网。实战iframe嵌套页面如何进行参数传递"

在开发中,偶尔会遇到需要在一个页面之中嵌套调用不同域名的项目进行展示,这时候就有一个问题,调用另外的项目的时候会需要一些参数,或者说是某些验证规则,但是我们的url传参又是有限制的,很多时候并不能完整的传过去我们需要的所有数据,所以在这里讲一下如何进行iframe父页面对子页面的参数传递(通信)

父页面代码

1、html部分

<iframe src="https://xxx.xxx.xx" ref="Frame" scrolling="auto"></iframe>

2、方法

		let Frame = this.$refs["Frame"]; //这里是过去DOM,我这里是vue获取方法,其他获取DOM请自行替换
        var obj = this.$store.state.token; //想要传的参数(我这里用的是vuex中保存的token)
        if (Frame.attachEvent) { 
   
          //兼容浏览器判断
          Frame.attachEvent("onload", function() { 
   
            let iframeWin = Frame.contentWindow;
            iframeWin.postMessage(obj, ‘https://xxxx.xx.xx’);
            //obj传递的参数 https://xxxx.xx.xx写成子页面的域名或者是ip
          });
        } else { 
   
          Frame.onload = function() { 
   
            let iframeWin = Frame.contentWindow;
            iframeWin.postMessage(obj, ‘https://xxxx.xx.xx’);
          };
        }

请注意如果是弹窗模式请在弹窗加载完成之后获取dom,否则获取不到,在vue中可以改为

this.$nextTick(() => { 
   
        let Frame = this.$refs["Frame"];
        var obj = this.$store.state.token;
        if (Frame.attachEvent) { 
   
          //兼容浏览器判断
          Frame.attachEvent("onload", function() { 
   
            let iframeWin = Frame.contentWindow;
            iframeWin.postMessage(obj, ‘https://xxxx.xx.xx’);
            //obj传递的参数 https://xxxx.xx.xx写成子页面的域名或者是ip
          });
        } else { 
   
          Frame.onload = function() { 
   
            let iframeWin = Frame.contentWindow;
            iframeWin.postMessage(obj, ‘https://xxxx.xx.xx’);
          };
        }
      });

子页面代码

// event.data &&typeof event.data === 'string' 是用来判断是否是我需要传过来的参数
//不明白的可以自行打印一下event.data
//判断是否是嵌套页面 window.self !== window.top
window.onmessage = function(event) { 
   
  if (
    event.data &&
    typeof event.data === 'string' &&
    window.self !== window.top
  ) { 
   
    console.log(event.data) //这里是数据的处理逻辑
  }
}

其中window.onmessage可以改成如下方式

 window.addEventListener( 'message', (e) => { 
   }),

ok完毕,希望对大家有用

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/15286.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信