iFrameResizer - readyCallback, кажется, никогда не вызывается - PullRequest
0 голосов
/ 24 сентября 2018

Я пытаюсь использовать метод readyCallback() в iFrameResizer , но, похоже, он не работает.Когда я добавляю обратный вызов к объекту 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.js внутри элемента iframe загружается и работает нормально.

Я что-то упустил?Спасибо.

1 Ответ

0 голосов
/ 26 сентября 2018

Оказывается, что метод 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');

Внутри iframe элемент с загруженным iframeResizer.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>
...