最近和别的公司合作一个项目,需要从他们那边引入一个页面,刚开始想的挺简单的,用iframe 引入就好啦,可是操作中才发现,自适应的问题不好解决,试了挺多办法,最终找到一个比较好的方法,记录一下,留着备用,也希望能帮助到需要的人。

一、先定义下名称:

原页面:target.html

放置iframe 的页面:index.html

二、原理:使用了html5 的message() 方法

三、如何使用:

1、target.html  页面中加入如下代码:

window.onload = function() {
    var height = document.body.scrollHeight;
    if (height <= 0 || height == undefined) {
      height = $(document).height();
    }
    parent.postMessage(height, 'https://www.baidu.com/');
  };
 
说明:https://www.baidu.com/   这个地址是 index.html 中的域的地址。。。。。。
2、index.html 页面中加入如下代码:
<iframe src="http://cd.edai.com/evaluateapi/" id="frm1" onload="resizeCrossDomainIframe('frm1', 'http://i.firefoxchina.cn/');" style="width:100%; " frameborder="0">
</iframe>
说明:http://i.firefoxchina.cn/   这个地址是  target.html   中的域的地址。。。。。。
<script>
        function resizeCrossDomainIframe(id, other_domain) {
            var iframe = document.getElementById(id);
            window.addEventListener('message', function(event) {
console.log(event);
                if (event.origin !== other_domain) return;
                if (isNaN(event.data)) return;
                var height = parseInt(event.data) + 32;
                iframe.height = height + "px";
            }, false);
        }
</script>
 
 
 
另外:相当于我在target.html 中传出来一个height的参数,在index.html 页面来接收这个参数,并执行。。当然,你也可以传其他的参数值,获取到并操作。
 
Message中一般常用的属性:

1、data 包含传入的消息,一般以会将传递的数据转化为字符串;

2、origin 返回消息来自的域,可以根据它来判断是否要处理消息,是非常基本的层级上的策略控制。

跨域引入iframe 自适应高度的更多相关文章

  1. 设置跨域的iframe的高度

    原因 如下图,A域中有个B域的页面,但是B的页面的长度不确定,A无法去设置一个准确的高度. PS:iframe高度设置auto是无效的 解决办法 如上图, (1)在B页面中加一个A的代理页面的ifra ...

  2. 跨域的iframe自动调整高度(cross-domain iframe resizer)

    可以使用iframe-resizer项目地址: http://davidjbradshaw.github.io/iframe-resizer/演示地址: http://davidjbradshaw.c ...

  3. iframe之间通信问题及iframe自适应高度问题

    下面本人来谈谈iframe之间通信问题及iframe自适应高度问题. 1. iframe通信 分为:同域通信 和 跨域通信.所谓同域通信是指 http://localhost/demo/iframe/ ...

  4. 【前端开发】前端引入公共部分footer header的几种方法,及iframe自适应高度js

    一.引入页面几种方法   1.IFrame引入,看看下面的代码    <iframe   frameborder=0   border=0   width=300   height=300    ...

  5. js实现iframe自适应高度

    转自:http://www.jb51.net/article/15780.htm 对于自适应高度的代码有很多,可效率什么的考虑进来好代码就不多见了,不过思路倒是差不多的! 不带边框的iframe因为能 ...

  6. iframe自适应高度的多种方法小结

    转自:http://www.jb51.net/article/15780.htm 不带边框的iframe因为能和网页无缝的结合从而不刷新页面的情况下更新页面的部分数据成为可能,可是 iframe的大小 ...

  7. iframe自适应高度的多种方法方法小结

    对于自适应高度的代码有很多,可效率什么的考虑进来好代码就不多见了,不过思路倒是差不多的  不带边框的iframe因为能和网页无缝的结合从而不刷新页面的情况下更新页面的部分数据成为可能,可是 ifram ...

  8. iframe自适应高度的多种方法方法小结(转)

    对于自适应高度的代码有很多,可效率什么的考虑进来好代码就不多见了,不过思路倒是差不多的不带边框的iframe因为能和网页无缝的结合从而不刷新页面的情况下更新页面的部分数据成为可能,可是 iframe的 ...

  9. iframe自适应高度处理

    一中方法: 在子页面加载完毕的时候执行 parent.document.getElementById("iframe").height=0; parent.document.get ...

随机推荐

  1. Exception in MessageQueue callback: handleReceiveCallback

    07-20 14:27:11.477: E/InputEventReceiver(7209): Exception dispatching input event. 07-20 14:27:11.47 ...

  2. PHP合并数组+与array_merge的区别分析

    主要区别是两个或者多个数组中如果出现相同键名,键名分为字符串或者数字,需要注意 1)键名为数字时,array_merge()不会覆盖掉原来的值,但+合并数组则会把最先出现的值作为最终结果返回,而把后面 ...

  3. java核心技术学习笔记之一程序设计概述

    Java 核心技术之一程序设计概述 一.   Java语言的特点 简单行 :取经于C++,排除了C++不常用的指针.结构等,增加垃圾回收. 面向对象:与C++不同是单继承,但是可以继承多接口.完全面向 ...

  4. PCB外形加工

  5. 宣布正式发布 Windows Azure Notification Hub,新增 SQL Server AlwaysOn 可用性组侦听器支持

    今天,我们非常高兴地宣布,针对使用 Windows Azure 的移动和企业开发人员推出一些新功能.这些新功能可以减少构建移动应用程序的开发时间和成本,并能帮助企业开发人员实现高可用性和全球业务连续性 ...

  6. 几个学习Maven不错的网址

    几个学习Maven不错的网址:---------------------------------------------------1.Maven官方网站 http://maven.apache.or ...

  7. linux中时间函数

    linux下常用时间类型有四种: time_t . struct   tm. struct  timeval .    struct   timespec 1.time_t   时间函数 time_t ...

  8. iOS网络开发-打造自己的视频客户端

    一.展示实现 效果      客户端:                                      服务器端:            二.创建表 create table CourseV ...

  9. ajax post传值

    一.字符串             $.ajax({                type: "POST",                data: {"ID&quo ...

  10. eclipse修改编译路径

    右击项目--properties--java build path--点击source,修改最下方的路径即可