前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >JavaScript 处理Iframe自适应高度的问题

JavaScript 处理Iframe自适应高度的问题

作者头像
aehyok
发布于 2018-09-11 04:11:48
发布于 2018-09-11 04:11:48
1.6K00
代码可运行
举报
文章被收录于专栏:技术博客技术博客
运行总次数:0
代码可运行

1.同域名下Iframe自适应高度的处理

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<iframe  onload="Javascript:SetIFrameHeight(this)" src="../Home/b" id="win" name="win" width="100%" height="1"> </iframe>

 当然此处我用的是Asp.Net MVC  此处src设置为路由结构

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<script type="text/javascript">  
  function SetIFrameHeight(obj) {
        var win = obj;
        if (document.getElementById) {
            if (win && !window.opera) {
                if (win.contentDocument && win.contentDocument.body.offsetHeight)
                    win.height = win.contentDocument.body.offsetHeight;
                else if (win.Document && win.Document.body.scrollHeight)
                    win.height = win.Document.body.scrollHeight;
            }
        }
    }
</script>

 用到的就是iframe嵌套的页面加载完毕的时候,运用onload事件来获取嵌套在iframe中网页的高度,然后赋值给Iframe的高度即可。

2.跨域时Iframe高度自适应

在主页面和被嵌套的iframe为不同域名的时候,就稍微麻烦一些,需要避开JavaScript的跨域限制。 原理:现有iframe主页面main.html、被iframe嵌套页面iframe.html、iframe中介页面agent.html三个,通过main.html(域名为http://www.ccvita.com)嵌套iframe.html(域名为:http://www.phpq.net),当用户浏览时执行iframe.html中的JavaScript代码设置iframeC的scr地址中加入iframe页面的高度,agent.html(域名为:http://www.ccvita.com)取得传递的高度,通过JavaScript设置main.html中iframe的高度。最终实现预期的目标。 iframe主页面main.html < !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><title>iframe主页面</title></head> <body>

<div style="border:1px solid #ccc;padding:10px;"> <iframe id="frame_content"  name="frame_content" src="iframe.html" width="100%" height="0" scrolling="no" frameborder="0"></iframe> </div> <br />尾部<br />

</body> </html> iframe嵌套页面iframe.html < !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><title>被iframe嵌套页面</title></head> <body>

文字<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /> 文字<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /> 文字<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /> 文字<br /><br /><br /><br /><br /><br /><br /><br /><br /><br />

<iframe id="iframeC" name="iframeC" src="" width="0" height="0" style="display:none;" ></iframe>

<script type="text/javascript"> function sethash(){     hashH = document.documentElement.scrollHeight;     urlC = "agent.html";     document.getElementByIdx("iframeC").src=urlC+"#"+hashH; } window.onload=sethash; </script>

</body> </html> iframe中介页面agent.html < !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><title>iframe中介页面</title></head>

<body>

<script> function  pseth() {     var iObj = parent.parent.document.getElementByIdx('frame_content');     iObjH = parent.parent.frames["frame_content"].frames["iframeC"].location.hash;     iObj.style.height = iObjH.split("#")[1]+"px"; } pseth(); </script>

</body> </html> 代码里,kimi可能路径表示不全 main.html 与 agent.html 是必须同一个域里 而iframe.html在另一个域

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2013-03-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
JavaScript事件与例子
事件,就是预先设置好的一段代码,等到用户触发的时候执行。 一:常见的事件: 1.关于鼠标的事件   onclick 鼠标单击触发   ondblclick 鼠标双击触发   onmouseover 鼠标移上触发   onmouseout 鼠标离开触发   onmousemove 鼠标移动触发 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-tra
二十三年蝉
2018/02/27
8790
图片的javascript延时加载
在页面很长(超过3屏)且图片又很多时,默认情况下浏览器会加载所有图片,有可能导致第二屏的图片显示出来了,但第一屏的图片还在加载,这种情况最适合用"javascript延时加载"来改善用户体验. 原理: 1.根据图片元素距页面顶部的距离,判断图片自身在第几屏 2.所有图片元素的src值先不设置,改而用其它自定义属性,比如src写成lazy_src(这样浏览器就不会主动加载图片) 3.根据1的判断,如果轮到自己登场了(即到顶部的距离变化了,比如用户拉动滚动条了),则将lazy_src值赋值为src,这样浏览器就
菩提树下的杨过
2018/01/23
1.1K0
图片的javascript延时加载
JavaScript事件(二)
例题顺序: 1.子菜单下拉 2.图片轮播 3.选项卡效果 4.进度条制作 5.滑动效果 6.滚动固定效果 1.子菜单下拉 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta ht
二十三年蝉
2018/02/27
1.2K0
Javascript倒计时
运行示例代码: <!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> <title> new document </title> </head> <body> <div> 距离广州亚运会开幕时间2010年11月12还有:<span id="otherTime"></span> </div> </body> </html> 运行
meteoric
2019/02/25
9500
跨域请求数据解决方案整理
跨域请求数据解决方案主要有如下解决方法: JSONP方式 表单POST方式 服务器代理 Html5的XDomainRequest Flash request 分开说明: 一、JSONP: 直观的理解: 就是在客户端动态注册一个函数 function a(data),然后将函数名传到服务器,服务器返回一个a({/*json*/})到客户端运行,这样就调用客户端的 function a(data),从而实现了跨域. 诞生背景: 1、Ajax直接请求普通文件存在跨域无权访问的问题,甭管是静态页面、动态网页、web
小端
2018/04/16
1.3K0
jQuery学习笔记之概念(1)
jQuery学习笔记之概念(1) ——————————————————————学习目录———————————————————— 1.概念 2.特点 3.选择器 4.DOM操作 5.事件 6.jQuery的Ajax ———————————————————————————————————————————————— 前言:当前流行的JavaScript库有: jQuery、MooTools、Prototype、Dojo、YUI、EXT_JS、DWR 1.概念: 核心库、UI和插件等。 jQuery是继承prototype之后又一个优秀的JavaScript库。现在jQuery主要包括核心库、UI和插件等。。 jQuery凭借着简介的语法和跨平台的兼容性,极大地简化了JavaScript开发人员遍历HTML文档、操作DOM。处理事件执行动画和开发ajax的操作。
王小雷
2019/05/26
2.6K0
WEB入门.五 页面设计简介
在上一阶段我们全面地学习了客户端页面技术的实现——HTML,内容包括:HTML 基本标签、表单和框架的使用、模板的制作和应用以及常用的网页布局特效等。通过学习,我们已经可以使用所学技术完成企业级门户网站的静态页面设计。但在实际应用过程中,设计师设计的页面在不同浏览器中的浏览效果不够一致,将导致页面不能兼容的问题,例如:在页面中定义一个层,使用 width 和 height属性设计层的大小,IE浏览器在解析 width 和 height 属性时将包含边框和内边距的大小,而使用符合 W3C标准的浏览器FireFox 在解析时不包含边框和内边距的大小。为保证设计出符合 Web标准的页面,兼容多种浏览器版本包括信息家电产品,如手机、PDA 、平板电脑等,我们将在本阶段学习 XHTML 的相关知识,以及如何使用 XHTML + DIV + CSS 技术对客户端页面进行重构,从而保证浏览效果完全一致。
用户9184480
2024/12/17
980
WEB入门.五  页面设计简介
iframe高度自适应的IE解决方案
主页面main.html  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <title>New Document </title> </head> <body> <style type="text/css">         .iframestyle {             
菩提树下的杨过
2018/01/22
9210
iframe 自适应高度的多种实现方式
需求:实现 iframe 的自适应高度,能够随着页面的长度自动的适应以免除页面和 iframe 同时出现滚动条的现象。
全栈程序员站长
2022/09/06
7.6K0
Jquery取得iframe中元素的几种方法Javascript Jquery获取Iframe的元素、内容或者ID,反之也行!
jquery取得iframe中元素的几种方法 在iframe子页面获取父页面元素 代码如下: $('#objId', parent.document); // 搞定... 在父页面 获取iframe子页面的元素 代码如下: $("#objid",document.frames('iframename').document) $(document.getElementById('iframeId').contentWindow.document.body).html()  显示iframe中body
磊哥
2018/05/08
8.8K0
真正解决iframe高度自适应问题
拿到这个对象,就可以根据正常网页的方法拿到嵌入(子)网页的文档高度,然后把值附给父页面的iframe的height。
yuezhongbao
2019/02/26
5.4K0
不使用定时器实现iframe的自适应高度
在微博上看到有人提及不使用定时器实现iframe自适应(onReadyStateChange + onLoad + onResize + onDOMSubtreeModified),然后就去折腾了,这篇与之前的文章:《不使用定时器实现onhashchange》有点类似
meteoric
2018/11/15
2.2K0
Div Scroll Bar (用层模拟滚动条)
对Div的盒模型以及Css控制定位都不熟,所以遇到了不少BT问题……好在最终突破了种种困难,基本实现了自己想要的效果。 说明: 最大的突破是通过了 xhtml1-transitional.dtd 验证,可以在xhtml文档里正常使用. 采用相对定位,使用起来更灵活,可以放在页面任何地方而不用改程序. 结构规范,容易扩展. 代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR
张善友
2018/01/19
1.4K0
iframe自适应高度 原
同时总结下经常用的高度           contentWindow   兼容各个浏览器,可取得子窗口的 window 对象。             contentDocument Firefox 支持,> ie8 的ie支持。可取得子窗口的 document 对象。             document.body.clientWidth  可见区域内容的宽度(不包含边框,如果水平有滚动条,不显示全部内容的宽度)           document.body.clientHeight 全部内容的高度(如果垂直有滚动条,也显示全部内容的高度)           document.body.offsetWidth  可见区域内容的宽度(含边框,如果水平有滚动条,不显示全部内容的宽度)           document.body.offsetHeight 全部内容的高度(如果垂直有滚动条,也显示全部内容的高度)           document.body.scrollWidth  内容的宽度(含边框,如果有滚动则是包含整个页面的内容的宽度,即拖动滚动条后看到的所有内容)           document.body.scrollHeight 全部内容的高度
tianyawhl
2019/04/04
2.3K0
JavaScript面向对象之Windows对象
JavaScript之Window对象 首先我们先了解一个概念:事件。 事件,就是把一段代码设置好,满足条件时触发。或者说,事件是可以被 JavaScript 侦测到的行为。 网页中每个元素都可以触发JavaScript事件。 我们先来看一个简单的事件: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html
二十三年蝉
2018/02/27
1.1K0
JavaScript面向对象之Windows对象
iframe自适应高度_iframe根据内容自适应高度
首先需要给iframe设置一个id,不需要滚动条则加上scrolling=”no”
全栈程序员站长
2022/11/08
5.1K0
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> <title>Parent Page</title> <script language="javascript" type="text/j
山河木马
2019/03/05
3.1K0
javascript当中frame和frameset的用法
1.frame和frameset(企业用的少了,所以视频略过,见后面iframe部分)
马克java社区
2021/01/19
8730
javascript当中frame和frameset的用法
JavaScript对象之document对象
DOM对象之document对象 DOM对象:当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。 HTML DOM 模型被构造为对象的树。 打开网页后,首先
二十三年蝉
2018/02/27
1.5K0
JavaScript对象之document对象
仿qq空间好友动态刷新
在qq空间里有好多网页特效值得初学html和js的去学习,今天我来介绍一种特效。我们在上qq空间是都会发现,当向下滚动鼠标,使滚动条到达最低端的时候,好友动态会自动增加。这种特效其实很简单,多余的不说了,直接上代码:
OECOM
2020/07/02
1.4K0
相关推荐
JavaScript事件与例子
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文