2012-05-23 22 views
1

我試圖動態調整基於其內容高度,使用easyXDM的iframe的高度。代碼會調用每5秒鐘檢查一次iframe的body.scrollheight,理論上說,如果頁面高度已更改,iframe高度將每隔5秒更新一次。它在最初的調用中工作 - iframe甚至可以正確調整大小。問題在於即使iframe內容的高度發生變化,提供者也會繼續返回內容的原始高度。定期報告與易於xdm跨域的DOM屬性

代碼:

消費者(頁面包含的iframe):

var socket = new easyXDM.Socket({ 
remote: "http://remoteDomain.ca/blahblah.html", 
container: "embedded", 
onMessage: function(message, origin){ 
    alert(message); //continually alerts "542px" even when body.scrollheight 
        // has changed 
    document.getElementById('iframe').style.height = message + "px"; 
    var t = setTimeout(function() { 
     socket.postMessage(); 
    }, 5000); 
}, 
onReady: function() { 
    socket.postMessage(); 
} 
}); 

供應商(iframe中的內容):

var socket = new easyXDM.Socket({ 
    onMessage: function(message, origin){ 
     socket.postMessage(document.body.scrollHeight); 
    } 
}); 

回答

1

後嘗試easyXDM,它終於通過其他樣品合作:http://stevesouders.com/misc/test-postmessage.php

在源代碼頁中:

<script type="text/javascript"> 
    setInterval(function() { 
     parent.postMessage(document.body.scrollHeight, '*'); 
    }, 500);  
</script> 

在框架頁:

<script type="text/javascript"> 

    if (window.attachEvent) { 
     // IE 
     window.attachEvent("onmessage", handleMessage); 
    } 

    if (window.addEventListener) { 
     // FF 
     window.addEventListener("message", handleMessage, false); 
    } 

    function handleMessage(e) { 
     $("#frameId").attr("height", e.data); 
    } 

</script> 
<iframe id="frameId" src="http://mysourceurl.com.br/" width="100%" 
    frameborder="0" scrolling="no"></iframe> 

工作就像一個魅力!我的iframe高度每setInterval interation刷新。