[原]子站点不可控的情况下iframe跨域自动适应高度

    关于iframe如何自动适应内部网站的高度,这个 在网上搜出来的千篇一律,都是用js获取内部内容的高度然后重新设置iframe的高度。但是这个方式在非跨域的情况下完全没有问题。只是跨域的时候,js是不能获得内部内容的高度的,什么都获取不到。

    很多的跨域解决方案都需要内部子站点做出动作,主动发起通知父站点的iframe。但是还有一种很棘手的情况,就是你对于子站点完全没有权限,或者,也不想为了这个事情,再去做一个通知这样的功能。

    所以,就只能自己动手满足自己的需求了。

    这里的方案的主要思路是:把跨域的转换成非跨域的

    我再本地项目中做一个页面专门用来对url对应网站的内容进行转发。

    a.php?url=www.baidu.com

<?php
echo file_get_contents('http://'.$_GET['url']);
?>

     这样的话,只需要将当前站点的 a.php?url=www.baidu.com 放在iframe当中就可以了,内部的css,js,图片等资源还是用的原来的远程地址,但是加载这些东西不会存在跨域问题,最重要的是这样我们就可以随意的用js去获取内部内容的高度了,然后再设置外部iframe的高度。

    唯一的弊端是:如果这个网站中又大量ajax加载的内容的话,就不适用这个方案,当然,jsonp的话是没关系的。

    因为如果页面中得内容是ajax加载进来的话,因为把页面转发到了本地网站,所以ajax会存在跨域请求不成功的问题,内容自然也就加载不出来了。

    所以,都是有缺点的,所以根据具体情况具体确定方案吧。

    

PS:我找过CSS的解决方案,但是没找到,不好使。有没有前端大神。知道可行的CSS解决方案???

Code | wwpeng | | (0) |