1

我正在尝试使用iFrameResizerreadyCallback()中的方法,但它似乎不起作用。当我将回调添加到对象时,它永远不会被调用:parent iframe

iFrameResize({
    log : true,
    checkOrigin: false,
    minHeight : 800,
    maxHeight : 4000,
    readyCallback: function(){
        // (!) never called
        console.log('ready parent callback .. '); 
    },
    messageCallback: function(data){
        // works OK
        console.log('message callback .. '); 
        console.log(data);
    },
    initCallback: function(){
        // works OK
        window.scrollTo(0,0); 
        alert("OK initiated");
    }, 
    resizedCallback : function(info){ 
        // works OK
        console.log(info);
        scrollTo(0, info.iframe.offsetTop);
    },
    heightCalculationMethod : 'taggedElement'
}, '#iframe123');

内部iframeResizer.contentWindow.jsiframe 元素加载并正常工作。

我错过了什么吗?谢谢你。

4

1 回答 1

7

原来那个方法readyCallback放错地方了。这是工作设置:

带有 iframe 元素的父页面:

iFrameResize({
    log : true,
    checkOrigin: false,
    minHeight : 800,
    maxHeight : 4000,
    messageCallback: function(data){
        console.log('message callback .. '); 
        console.log(data);
        // scroll to top edge of iframe element
        scrollTo(0, data.iframe.offsetTop);
    },
    initCallback: function(){
        console.log("OK initiated");
        window.scrollTo(0,0); 
    }, 
    resizedCallback : function(info){ 
        console.log(info);
        scrollTo(0, info.iframe.offsetTop);
    },
    heightCalculationMethod : 'taggedElement'
}, '#iframe123');

在已加载的iframeiframeResizer.contentWindow.js元素内:

// solution 1:
window.iFrameResizer = {
    readyCallback: function(){
        // scroll parent to top edge of iframe element
        window.parentIFrame.scrollToOffset(0,0);
    }
}

// solution 2:
window.iFrameResizer = {
    readyCallback: function(){
      if('parentIFrame' in window){
          parentIFrame.sendMessage('Loaded iframe ['+window.parentIFrame.getId()+'].');
      }
    }
}

// load content window at the end
<script src="/js/iframeResizer.contentWindow.js"></script>
于 2018-09-26T07:20:12.510 回答