美文网首页JavaScript前端开发那些事儿
iframe子页面和父页面进行交互

iframe子页面和父页面进行交互

作者: 糖小羊儿 | 来源:发表于2021-02-04 14:34 被阅读0次
    • 在做项目的时候遇到这样的情况:有时候需要使用iframe来带入别人写好的代码,这个页面甚至和我们没有在一个服务器上,那么如何发生数据交互。
    • iframe加载完毕,需要往父页面传递数据,这个时候很容易遇到获取不到dom的情况,所以我们可以使用自定义事件来解决这个问题

    iframe.html页面的代码,普通的js代码

    • 给父级的iframe绑定自定义的 loadComplete 事件,然后放入任何你想要的让父元素执行的地方,比如你想要的iframe加载完毕就执行,那就放到window.onload;如果想要点击某个地方执行,那就放入那个按钮的点击事件里。
    • 同时我们可以定义一个getParams方法,来给父页面传参
      • func 表示 自定义方法名字,比如我们想要父页面执行完毕,来调用我们页面的某个方法
      • data 给父页面传递的参数
     window.onload = function(){
        let myIframe = top.window.document.querySelector('#myIframe');
        myIframe.dispatchEvent(new Event('loadComplete'));
    }
    function getParams(callback){
        callback({
            func:'testFn',
            data:{
                name:'小明',
                age:18,
            }
        })
    }
    function testFn(){
        console.log('testFn')
    }
    

    父页面的代码,父页面使用vue语法

    <iframe src="iframe.html" id="myIframe"  @loadComplete="loadComplete" ></iframe>
    methods: {
        loadComplete() {
          let myIframe = document.querySelector("#myIframe");
          let subwin = myIframe.contentWindow;
          subwin.getParams((res) => {
            console.log(res.data);
            let func = res["func"];
            subwin[func]();
          });
        },
    },
    

    相关文章

      网友评论

        本文标题:iframe子页面和父页面进行交互

        本文链接:https://www.haomeiwen.com/subject/cliozktx.html