Периодически сообщать о доменных свойствах междоменных с легким xdm

Я пытаюсь динамически изменить размер высоты iframe в зависимости от высоты содержимого, используя easyXDM. Код вызывает вызов iframe body.scrollheight каждые 5 секунд. Теория заключается в том, что если высота страницы изменилась, высота iframe будет обновляться каждые 5 секунд. Он работает при первом вызове - iframe даже правильно изменяет размер. Проблема заключается в том, что поставщик продолжает возвращать исходную высоту содержимого, даже если высота содержимого 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.

Другие вопросы по тегам