iframe大小自适应
这篇讲的是如何实现iframe高度自适应,起因竟然是一个前端面试题。作者坦诚自己最初也对iframe有“性能差、不友好”的偏见,但深入研究后发现它在嵌入第三方内容时不可或缺。 文章的核心是针对两种场景给出了解决方案。在同域下,方法很直接:JavaScript可以直接访问iframe内部DOM,获取其滚动高度和宽度,然后设置给外层iframe标签,轻松实现自适应。但更挑战的是跨域场景,由于同源策略限制,父页面无法直接操作iframe内容。 为此,作者巧妙地利用了一个“代理页面”作为桥梁。在跨域的iframe内部,通过一个隐藏的iframe将页面尺寸信息编码到location.hash中,传递给这个代理页面。由于代理页面与父页面同源,它就能安全地读取这些信息,并反过来设置父页面中iframe的大小。这个方法虽然步骤多一些,但思路清晰,有效绕过了安全限制。 作者还特别提醒了开发测试时需要用本地服务器,避免浏览器直接访问文件导致的权限问题。文章最后附上了完整的Node.js测试代码和参考文献,方便读者动手实践和深入研究。