代码之家  ›  专栏  ›  技术社区  ›  poo

如何在包含页面内调整iframe的大小?

  •  5
  • poo  · 技术社区  · 15 年前

    我想访问我的页面所在的iframe并调整其大小。顺便说一句,我是用JavaScript做的。

    有点像父母和身高 或偏离八度。

    <iframe src="mypage.asp" height="400" width="400" ></iframe> 
    

    在mypage.asp中,我做类似的事情:

    var h = // new height;
    parent.height = h; 
    

    但不好吗?还有谁知道更多?

    2 回复  |  直到 12 年前
        1
  •  4
  •   npup    15 年前

    如果要从加载在iframe中的页面中调整iframe的大小,请尝试此操作。它似乎至少在本地工作:

    function doIt() {
        var elem = window.parent.document.getElementById('myIframe'); // the id of your iframe of course
        elem.style.height = '40em';
    }
    

    我假设页面和iframe都是您的,并且具有相同的“来源”。

        2
  •  3
  •   RickyA    12 年前

    我会用 window.postMessage . 这将从iframe向包含iframe的父页发送一条消息。然后可以更新父级中的高度。尝试在iframe中设置高度会给浏览器xss带来严重的限制。

    一个很好的例子是 here :

    起源:

    // Every two seconds....
    setInterval(function() {
        // Send the message "Hello" to the parent window
        // ...if the domain is still "davidwalsh.name"
        parent.postMessage("Hello","http://davidwalsh.name");
    },1000);
    

    iFrAM:

    // Create IE + others compatible event handler
    var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent";
    var eventer = window[eventMethod];
    var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message";
    
    // Listen to message from child window
    eventer(messageEvent,function(e) {
      console.log('parent received message!:  ',e.data);
    },false);