首页 > 信息汇总 > 深圳Web前端培训班费用

分享

深圳Web前端培训班费用

时间:2024-06-25 19:43:44
导语概要

新浪网、新浪教育频道主办的“2017中国教育盛典——教育之变” 于2017年11月28日在北京隆重举行,参会人员包括教育界知名专家学者、政府相关领导、校方代表、顶级教育投资人、教育机构负责人、教育创业精英、教育公益人士代表等,千锋因其在IT培训行业的影响力以及为IT培训行业做出的重要贡献,应邀参加了此次盛典,并荣获“2017中国口碑影响力职业培训机构”称号...


IT培训机构

WEB前端培训之iframe高度自适应、载入完成事件

WEB前端培训之iframe高度自适应、载入完成事件

高度自适应
-------------------------------------------------
方法一:
经典代码 iFrame 自适应高度,在IE6/IE7/IE8/Firefox/Opera/Chrome/Safari通过测试。
只适用于同域下,不能跨域。

Js代码
<iframesrc="http://127.0.0.1:8080/HC1/zhuanpan.htm"id="iframepage"name="iframepage"frameBorder=0scrolling=nowidth="100%"height="1000"onLoad="iFrameHeight()"></iframe><scripttype="text/javascript"language="javascript">//经典代码iFrame自适应高度,在IE6/IE7/IE8/Firefox/Opera/Chrome/Safari通过测试。functioniFrameHeight(){varifm=document.getElementById("iframepage");varsubWeb=document.frames?document.frames["iframepage"].document:ifm.contentDocument;if(ifm!=null&&subWeb!=null){ifm.height=subWeb.body.scrollHeight;}}</script

方法二:
只适用于同域下,不能跨域。
Js代码
<scriptlanguage="javascript"type="text/javascript">//**iframe自动适应页面**////输入你希望根据页面高度自动调整高度的iframe的名称的列表//用逗号把每个iframe的ID分隔.例如:["myframe1","myframe2"],可以只有一个窗体,则不用逗号。//定义iframe的IDvariframeids=["ifm"]//如果用户的浏览器不支持iframe是否将iframe隐藏yes表示隐藏,no表示不隐藏variframehide="yes"functiondyniframesize(){vardyniframe=newArray()for(i=0;i<iframeids.length;i++){if(document.getElementById){//自动调整iframe高度dyniframe[dyniframe.length]=document.getElementById(iframeids[i]);if(dyniframe[i]&&!window.opera){//dyniframe[i].style.display="block"if(dyniframe[i].contentDocument&&dyniframe[i].contentDocument.body.offsetHeight)//如果用户的浏览器是NetScapedyniframe[i].height=dyniframe[i].contentDocument.body.offsetHeight;elseif(dyniframe[i].Document&&dyniframe[i].Document.body.scrollHeight)//如果用户的浏览器是IEdyniframe[i].height=dyniframe[i].Document.body.scrollHeight;}}//根据设定的参数来处理不支持iframe的浏览器的显示问题if((document.all||document.getElementById)&&iframehide=="no"){vartempobj=document.all?document.all[iframeids[i]]:document.getElementById(iframeids[i])tempobj.style.display="block"}}}if(window.addEventListener)window.addEventListener("load",dyniframesize,false)elseif(window.attachEvent)window.attachEvent("onload",dyniframesize)elsewindow.onload=dyniframesize</script><iframesrc="http://127.0.0.1:8080/HC1/zhuanpan.htm"frameBorder=0width="100%"scrolling="auto"id="ifm"name="ifm"></iframe>

载入完成事件
-------------------------------------------------------------------
经常会遇到这样一种情况。
在iframe里嵌入另外一个页面时。如果iframe载入的页面响应较快,或许我们感觉不到页面载入的不同步,但试想,如果一个需要内嵌到iframe里的页面的响应很慢,这里会出现一种什么现象呢?这时将会出现所有页面已经载入完成,但在iframe元素处,将会出现空白,直到内嵌页面完成载入时,该空白处才会显示新载入的页面。
可想而知,一个页面如果长时间的空白,对于浏览者来说将意味着什么。
如果在内嵌页面未载入完成时,给出一种加载提示信息。如:“页面加载中”之类的,我想这对浏览页面用户来讲,将不再是煎熬,更是一种视觉上的享受。
为了实现这样的效果,一般会采用如下原理处理。
·iframe载入区域给出友好的提示信息。
·当iframe载入完成时,清空提示信息,而让iframe显示。
这些都比较容易,但现在的问题的关键是怎么监听iframe元素内的页面已经载入完成。
关键这个问题,一般来讲,会分两种情况的来讨论解决方案。
·同域的嵌套。最好是让子页面调用父页面的方法。
·如果是异域,但子页面无法修改,那么:在Firefox/Opera/Safari中,可以直接使用iframe onload事件;而在IE中,可以通过定时器测定子页面的document.readyState,或者使用iframe onreadystatechange事件计算该事件的响应。
1.同域嵌套。
parent.html
function ifrmLoaded() {
// code here
}
sub.html
window.onload = function() {
window.parent.ifrmLoaded();
}
有时候,为了防止自己的页面不被别人嵌套,可以采用如下方式解决:
if(window.parent!=window) window.parent.location="http://hqlong.com";
//or
if(window.top!=window) window.top.location="http://hqlong.com";
2.嵌套页面不能修改,或者异域嵌套。
2.1 Firefox/Opera/Safari中直接使用iframe onload事件
document.getElementById('ifrm').onload = function() {
//here doc
}
2.2 在IE下,定时器测document.readyState或者注册iframe onreadystatechange事件
2.2.1 使用定时器
var oFrm = document.getElementById('ifrm');
var fmState=function(){
var state=null;
if(document.readyState){
try{
state=oFrm.document.readyState;
}catch(e){state=null;}
if(state=="complete" || !state) {
onComplete();
return;
}
window.setTimeout(fmState,10);
}
};
//在改变src或者通过form target提交表单时,执行语句:
if(fmState.TimeoutInt) window.clearTimeout(fmState.timeoutInt);
fmState.timeoutInt = window.setTimeout(fmState,400);
2.2.2 使用iframe onreadystatechange事件
var oFrm = document.getElementById('ifrm');
oFrm.onreadystatechange = function() {
if (this.readyState &amp;&amp; this.readyState == 'complete') {
onComplete();
}
}
每当iframe加载页面,过程内会激活onreadystatechange事件三次,相应的状态分别是loading,interactive和complete,而最后一次才是complete.
3. 兼容Firefox/Opera/Safari/IE的处理方式。
var oFrm = document.getElementById('ifrm');
oFrm.onload = oFrm.onreadystatechange = function() {
if (this.readyState &amp;&amp; this.readyState != 'complete') return;
else {
onComplete();
}


本文版权归黑马程序员web前端开发学院所有,欢迎转载,转载请注明作者出处,谢谢!
作者:黑马程序员web前端培训学院;
首发:http://www.itcast.cn/web/

IT培训学校学员作品

IT培训学校推荐课程
  • IT培训机构课程

    大数据

  • IT培训机构课程

    智能物联网

  • IT培训机构课程

    Unity游戏开发

  • IT培训机构课程

    网络安全

  • IT培训机构课程

    互联网营销

  • IT培训机构课程

    影视剪辑包装

千峰教育教学大纲紧跟企业需求,并推出软考、Adobe认证、PMP认证、红帽RHCE认证课程,拥有全国一体化就业保障服务,成为学员信赖的职业教育品牌,公司目前已与国内20000余家IT相关企业建立人才输送合作关系,年培养优质人才20000余人,合作院校超600所,累计向互联网输出免费教学视频800余套,累积播放量逾9000万次。千峰教育IT培训中心每年有数百万名学员受益于千锋组织的技术研讨会、技术培训课、网络公开课及免费教学视频,千锋历程精彩纷呈,获得荣誉包括:中关村移动互联网产业联盟副理事长单位、中国软件协会教育培训委员会认证一级培训机构、中关村国际孵化软件协会授权中关村移动互联网学院、教育部教育管理信息中心指定移动互联网实训基地等。


IT培训中心

IT课程分类

  • IT课程推荐

    HTML5

  • IT课程推荐

    Java

  • IT课程推荐

    Python

  • IT课程推荐

    全链路设计

  • IT课程推荐

    云计算

  • IT课程推荐式

    软件测试

Copyright © 2022-2023 www.axbang.cn All rights reserved.备案号: 豫ICP备2022021264号.

文章由用户自行发布,如有侵权请及时联系删除。

电话咨询 在线客服 预约试听