看了很多不同的解决方案,我最终编写了一个简单的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的访问。