2012-09-26 47 views
0

我有一個使用window.postMessage與它的父級(在其他域上)通信的Iframe。在父窗口上的 我有一個resize方法,可以從iframe中調用。JS - 基於它的內容調整一個Iframe的大小,不使用超時

我想將代碼添加到將監視內容維度更改的iframe中,並在需要時調用resize方法,而不使用超時...是否有「事件方式」來執行此操作? enter image description here

更新 我用純JS,並想監視內部文件

+1

你可以訪問框架內的網頁加載的源JS補充呢? – loganfsmyth

+0

我有權訪問iframe和父窗口 –

+0

這是什麼導致iframe更改大小?圖片加載?內容改變?通常,您只需將偵聽器綁定到每個事件。 – loganfsmyth

回答

0

使用jQuery的滾動寬度和高度,你可能引發父窗口的事件:

parent.$("iframe").trigger("resize"); 

而在父窗口中,您會聽到此事件:

$("iframe").on("resize", function(){ 
    // do the magic 
}); 
+1

'parent。$'將不起作用,如果兩個幀位於不同的域上,由於跨域安全限制。 – loganfsmyth

+0

調用方法不是問題,問題是如何知道內容何時更改,而不使用間隔來檢查它 –

0

像italo.nascimento說,用jQuery做到這一點:

$(window).resize(function() { 
    var winW = $(this).width(), 
     winH = $(this).height(); 
    $("iframe").css({ 
     width: winW, 
     height: winH 
    }); 
}).resize(); 
+1

但是他希望根據iframe內容調整大小。所以iframe本身應該告訴主頁面何時調整DOM元素的大小[