`
ayue222
  • 浏览: 48274 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

JS iframe跨域自适应内容高度

阅读更多
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<meta http-equiv='Content-Type' content='text/html; charset=UTF-8' />
    <title>Cross-Domain iframe Resizing</title>
    <script type="text/javascript">
      var FrameManager = {
		    currentFrameId : '',
		    currentFrameHeight : 0,
		    lastFrameId : '',
		    lastFrameHeight : 0,
		    resizeTimerId : null,
		    init: function() {
		        if (FrameManager.resizeTimerId == null) {
		            FrameManager.resizeTimerId = window.setInterval(FrameManager.resizeFrames, 500);
		        }
		    },
		    resizeFrames: function() {
		        FrameManager.retrieveFrameIdAndHeight();
		        if ((FrameManager.currentFrameId != FrameManager.lastFrameId) || (FrameManager.currentFrameHeight != FrameManager.lastFrameHeight)) {
		            var iframe = document.getElementById(FrameManager.currentFrameId.toString());
		            if (iframe == null) return;
		            iframe.style.height = FrameManager.currentFrameHeight.toString() + "px";
		            FrameManager.lastFrameId = FrameManager.currentFrameId;
		            FrameManager.lastFrameHeight = FrameManager.currentFrameHeight;
		            window.location.hash = '';
		        }
		    },
		    retrieveFrameIdAndHeight: function() {
		        if (window.location.hash.length == 0) return;
		        var hashValue = window.location.hash.substring(1);
		        if ((hashValue == null) || (hashValue.length == 0)) return;
		        var pairs = hashValue.split('&');
		        if ((pairs != null) && (pairs.length > 0)) {
		            for(var i = 0; i < pairs.length; i++) {
		                var pair = pairs[i].split('=');
		                if ((pair != null) && (pair.length > 0)) {
		                    if (pair[0] == 'frameId') {
		                        if ((pair[1] != null) && (pair[1].length > 0)) {
		                            FrameManager.currentFrameId = pair[1];
		                        }
		                    } else if (pair[0] == 'height') {
		                        var height = parseInt(pair[1]);
		                        if (!isNaN(height)) {
		                            FrameManager.currentFrameHeight = height;
		                            FrameManager.currentFrameHeight += 15;
		                            
		                        }
		                    }
		                }
		            }
		        }
		        
		    },
		    registerFrame: function(frame) {
		        var currentLocation = location.href;
		        var hashIndex = currentLocation.indexOf('#');
		        if (hashIndex > -1) {
		            currentLocation = currentLocation.substring(0, hashIndex);
		        }
		        frame.contentWindow.location = frame.src + '?frameId=' + frame.id + '#' + currentLocation;
		    }
		};
		window.setTimeout(FrameManager.init, 300);
    </script>
</head>
<body>
    <div id="page-wrap">
        <h1>Cross-Domain iframe Resizing</h1>
        <iframe id="frame-one" scrolling="no" frameborder="0" src="http://digwp.com/examples/iFrameSource/source.html" onload="FrameManager.registerFrame(this)"></iframe>
    </div>
</body>
</html>
分享到:
评论
1 楼 osacar 2010-09-14  

不行啊。没效果!在Opera下测试
IE也不行。

相关推荐

    JavaScript 处理Iframe自适应高度(同或不同域名下)

    Iframe自适应高度一直都备受关注,接下来为大家介绍下同域名下Iframe自适应高度的处理以及跨域时Iframe高度自适应,感兴趣的朋友可以参考下哈

    js跨域问题之跨域iframe自适应大小实现代码

    前几天做公司和开心网合作项目的时候 碰到iframe 跨域自适应的问题刚开始很迷惑 开心网那边技术工程师给我发了一段这样子的代码。

    Iframe 高度自适应(兼容IE/Firefox、同域/跨域)

    采用JavaScript来控制iframe元素的高度是iframe高度自适应的关键,同时由于JavaScript对不同域名下权限的控制,引 发出同域、跨域两种情况。 同域时Iframe高度自适应 下面的代码兼容IE/Firefox浏览器,控制id为...

    iframe自适应高度.rar

    介绍: 填写的嵌入地址一定要和本页面在同一个站点上,否则会提示“拒绝访问!”。对跨域引用有权限问题,请查阅其他资料。

    利用location.hash实现跨域iframe自适应

    页面域关系: 主页面a.html所属域... 问题本质: js对跨域iframe访问问题,因为要控制a.html中iframe的高度和宽度就必须首先读取得到b.html的大小,A、B不属于同一个域,浏览器为了安全性考虑,使js跨域访问受限,读取不到b.

    如何设置iframe高度自适应在跨域情况下的可用方法

    iframe的高度需要根据子页面的实际高度来进行调整,但是如果子页面不在同一域中怎么办?这时候脚本没有办法获取到子页面的高度,存在JavaScript跨域的问题

    iframe 自适应大小实现代码

    页面域关系: 主页面a.html所属域A:...js对跨域iframe访问问题,因为要控制a.html中iframe的高度和宽度就必须首先读取得到b.html的大小,A、B不属于同一个域,浏览器为了安全性考虑,使js跨域访问受限,读取不到b

    JS解决iframe之间通信和自适应高度的问题

    关于iframe之间的通信问题与自适应高度问题网上有很多,那么这篇文章小编也和大家一起来谈谈iframe之间通信问题及iframe自适应高度问题,有需要的可以参考借鉴。

    iframe窗口高度自适应的实现方法

    domainA 中有一个页面index.html,通过iframe嵌套了domainB中的一个页面other.html由于other.html页面在iframe中显示,而且其页面内容会动态的增加或减少,现在需要去掉iframe的滚动条由于javascript同源策略的限制...

    iframe-resizer-react:Iframe-Resizer的官方React界面

    iframe尺寸调整器React 该库是用于的官方React接口,该接口可自动调整相同和跨域iFrame的高度和宽度,以适应其包含的内容。 它提供了一系列功能来解决使用iFrame时最常见的问题,其中包括: 将iFrame的高度和宽度...

    iframe窗口高度自适应的又一个巧妙实现思路

    domainA 中有一个页面index.html,通过iframe嵌套了domainB中的一个页面other.html 由于other.html页面在iframe中显示,而且其页面内容会动态的增加或减少,现在需要去掉iframe的滚动条 由于javascript同源策略的...

    iframe-loader:创建一个iframe \ html5方法postMessage \跨域

    the iframe communicates with its father page,cross domain supported(支持iframe和父页面跨域通信(全屏、高度自适应、滚动监听等) use html5 method postMessage how to use(使用) parent.html(父页面) &...

    NodeDemos:节点演示

    iframe自适应,同域和跨域下实现 无刷新文件上传(fileupload) 利用Express4.12.1框架 + multiparty工具包实现了Node下的文件无刷新上传功能 利用iframe实现 利用ajax实现 豆瓣爬虫(crawler-douban) 利用nodejs...

    IBM WebSphere Portal门户开发笔记01

    64、JS自动检测IFRAME内容高度并自动设置为IFRAME高度 338 65、JS MOVETO设置屏幕滚动到最底端或者最顶端 339 66、JS OBJECT方式设置浏览器最大化与最小化 339 67、边框标签FIELDSET 339 68、按钮与A标签的DISABLED...

    artDialog_Demo

    25、可以自适应iframe内容的大小(不跨域的前提下) 26、对超过预设面积大小的对话框拖动自动采用替身的方式,以求拖动更流畅 27、新增加一个'data'的接口,它保存了你对话框每次创建的消息对象 (操作iframe消息...

Global site tag (gtag.js) - Google Analytics