Периодически сообщать о доменных свойствах междоменных с легким 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.