看了很多不同的解決方案,我最終編寫了一個簡單的jQuery插件來記錄一些不同的用例。由於我需要一個支持門戶頁面上的多個用戶生成的iFrame的解決方案,因此支持的瀏覽器調整大小,並可以應對iFrame之後的主機頁JavaScript加載。我還添加了對寬度和回調函數大小的支持,並允許覆蓋body.margin,因爲您可能希望將此設置爲零。
https://github.com/davidjbradshaw/iframe-resizer
主頁用戶的jQuery,iframe代碼中只是一個小小的自包含JavaScript,因此,它是別人網頁的好客人。
jQuery然後在主機頁面上初始化,並具有以下可用選項。更多關於這些在GitHub頁面上做什麼的細節。
$('iframe').iFrameSizer({
log: false,
contentWindowBodyMargin:8,
doHeight:true,
doWidth:false,
enablePublicMethods:false,
interval:33,
autoResize: true,
callback:function(messageData){
$('p#callback').html('<b>Frame ID:</b> ' + messageData.iframe.id +
' <b>Height:</b> ' + messageData.height +
' <b>Width:</b> ' + messageData.width +
' <b>Event type:</b> ' + messageData.type);
}
});
如果設置enablePublicMethods,它可以讓你在iframe手動設置iFrame的大小,甚至從主機頁面刪除iframe的訪問。