美文网首页
iframe内容汇总

iframe内容汇总

作者: wyq_0bed | 来源:发表于2017-06-12 17:09 被阅读0次

    iframe的常规用法就不说了,就那么用,这里总结一下iframe里其他的用法和功能

    1.iframe高度自适应

    iframe的高度自适应需要获取iframe文档的实际高度,然后给引入文件的iframe标签设置行高.设置方法是通过JS获取iframe的contentWindow属性,获取iframe文档的高度.

     // HTML
    <iframe id="iframe" src="test22.html" frameborder="1"></iframe>
    // JS
    var iframe = document.getElementById("iframe");
    iframe.onload = function(){
        this.height = this.contentWindow.document.documentElement.scrollHeight;
    }
    

    当浏览器加载iframe的时候,会创建一个新的window对象出来, contentWindow就是由加载iframe创建的window对象,然后通过获取contentWindow的实际高度,然后给iframe标签设置高度,从而实现自适应高度的效果.同样也能获取iframe文档流里的元素

    iframe.onload = function(){
        console.log(this.contentWindow.document.getElementsByTagName("span"));
    }
    

    2.点击iframe修改父级元素

    跟上面的过程正好相反,上面需要在父级上找到iframe的高度然后设置,这个需要在iframe上找到父级的DOM,然后进行修改

    // 子元素的点击方法
    btn.onclick = function(){
        window.parent.document.getElementsByTagName("div")[0].innerHTML = 2;
    }
    

    window.parent就是父级窗口,能找到所有父级的DOM元素

    3.iframe 父级和子级方法相互调用

    父级的JS代码

    var iframe = document.getElementById("iframe");
    function dian(){
            // son()是子级的函数名
        console.log(iframe.contentWindow.son());
    }
    
    子级的JS代码
    
     var btn = document.getElementById("btn");
    btn.onclick = function(){
            // 父级页面的函数名
           window.parent.father();
    }
    

    4.iframe的跨域

    iframe也可以像jsonp那样获取数据,数据显示在iframe里,但是有别于jsonp的获取方式,iframe能显示,但是无法获得子元素里的内容,这涉及到安全问题,所以想通过iframe的方式实现jsonp的跨域请求,还是算了吧,别要强了.

    相关文章

      网友评论

          本文标题:iframe内容汇总

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