Facebook JavaScript:iFrame resize/height属性更改(FB注释框)上的事件侦听器

Facebook JavaScript:iFrame resize/height属性更改(FB注释框)上的事件侦听器,facebook,iframe,facebook-javascript-sdk,Facebook,Iframe,Facebook Javascript Sdk,我有以下问题:我需要为iframe(一个Facebook评论框)添加一个事件侦听器,当它改变高度时 我无法访问或更改内容窗口,因为它是跨域的。但是必须有一个回调函数或改变height属性的东西 有没有办法在属性更改或其他情况下添加事件侦听器?我已经试过调整大小和改变大小 我都快疯了。。。有人有主意吗 非常感谢你 简短回答:不 但是,您可以使用“postMessage”和“receiveMessage”从一个iframe跨域发送到另一个iframe。(当然,只有当你有权访问iframed内容时——

我有以下问题:我需要为
iframe
(一个Facebook评论框)添加一个事件侦听器,当它改变高度时

我无法访问或更改
内容窗口
,因为它是跨域的。但是必须有一个回调函数或改变
height
属性的东西

有没有办法在属性更改或其他情况下添加事件侦听器?我已经试过调整大小和改变大小

我都快疯了。。。有人有主意吗

非常感谢你

简短回答:不

但是,您可以使用“postMessage”和“receiveMessage”从一个iframe跨域发送到另一个iframe。(当然,只有当你有权访问iframed内容时——我怀疑不是因为它在facebook上。)

无论如何。。。为了将来的帮助

(在iframed页面上)

(在容器页面上)

请记住更改每个脚本中的域

注意:这是在使用jQuery——它可以工作,但我相信有人能比我写得更好?也不是太骄傲的间隔检查高度。。。如果可以的话,可能会更新

var ii = {}
ii.window_height = 800;
var sendHeight = function () {
        var window_height = $('body').outerHeight(true);
        if (window_height != ii.window_height) {
        ii.window_height = window_height;
        window.parent.postMessage(ii.window_height, "http://containerDomain.com");
    }
}
setInterval(sendHeight, 2000);
function receiveMessage(evt) {
  if (evt.origin === 'https://iframedDomain.com')
  {
    var iframe_content_height = evt.data;
    $('#iframe_form').animate({height: iframe_content_height });
  }
}

if ($.browser.msie) {
window.attachEvent('onmessage', receiveMessage);    
} else {
window.addEventListener('message', receiveMessage, false);
}