javascript+iframe 实现无刷新载入整页的代码


Posted in Javascript onMarch 17, 2010

jquery有一个load()方法,使用方法如:$("#div").load("/index.html");这样就可以将index.html加载到ID为div的容器中,
用iframe也可以实现,但没有上述做法完美,参见discuz那些网站,如登陆弹出一个层,也是载入的一个页面,但我发现状态栏左边出现的是 正在打开about:blank,不知道是不是将iframe的src设为about:blank,然后在编辑iframe呢?但注意了,查看源代码的时候却看不到载入页面的时候是看不到载入的这个页面的源代码,不知道是不是才用了跟jquery一样分析head,然后将载入页面的头部信息添加到主页面的头部,然后用eval()函数执行javascript代码,,求解?
以下我用了一个页面做为承载载入页面源代码的容器,命名为do.html,传递一个参数uri告诉do.html要载入的页面!
示例DEMO:http://mi.8866.org:2/management.aspx/ 直接点登陆既可
该页面加载了两个js文件

<script type="text/javascript" src="/image/script.ashx/global.js?ver=1.0.0"></script> 
<script type="text/javascript" src="/image/script.ashx/plus.js?ver=1.0.0"></script>

do.html的源代码为:
<html> 
<head> 
<title>载入中...</title> 
<script type="text/javascript" src="/image/script.ashx/do.js?ver=1.0"></script> 
</head> 
<body> 
</body> 
</html>

File:do.js
document.write("<script src=\"/image/script.ashx/global.js?ver=1.0.0\"></script>"); 
document.write("<script src=\"/image/script.ashx/plus.js?ver=1.0.0\"></script>"); 
window.onload=function(){ 
j.plus.loadPage({uri:"/",time:1},{ 
start:function(){/*开始加载的回执函数*/}, 
over:function(){/*加载完成的回执函数*/}}); 
}

loadPage的定义如下:
if(!typeof(window.j))window.j=new js(); 
j.plus=new plus(); 
function plus(){} 
plus.prototype.loadPage=function(r,callback,e,times){ 
/* 
r 请求; r.time : 等待加载时间(毫秒); 
callback :回执函数 (callback.start(),callback.over()) 
e.element 页面容器; */ 
if(!r.uri)alert('page uri parameters not be found!'); 
var aj=new ajax(); 
aj.request(r,{ 
start:function(){if(callback.start)callback.start();if(e)e.innerHTML='加载中..';else{document.body.innerHTML='加载中';}}, 
error:function(x){if(e)e.innerHTML='加载失败!';else document.body.innerHTML='加载失败';}, 
success:function(x){ 
var func=function(){if(callback.over)callback.over();if(e)e.innerHTML=x;else document.write(x);}; 
if(r.time){var t=new timer(r.time,func);t.start();}/*延迟显示*/ 
else func(); 
}}); 
} 
/*aj为ajax请求对象在global.js中定义 
* timer为实现一个定时器的代码,在plus.js中有定义 */

函数已经定义完成,我们在需要加载的地方添加代码:
File:/management.aspx/
var bd=j.$("mainbody"); // mainbody为一个div容器 
var uri="/do.html?uri=/management.aspx/"+uri; 
bd.innerHTML="<iframe src='"+uri+"' frameborder='0' width='"+(j.x()-200)+"' height='100%' scrolling='no'></iframe>";

由于do.html会被缓存,所以在do.js中用ajax将返回的html输出到do.html
在线演示地址 http://demo.3water.com/js/menu_iframe/index.htm
Javascript 相关文章推荐
JavaScript 学习笔记(六)
Dec 31 Javascript
JQuery下的Live方法和$.browser方法使用代码
Jun 02 Javascript
javascript获取四位数字或者字母的随机数
Jan 09 Javascript
JS对字符串编码的几种方式使用指南
May 14 Javascript
Function.prototype.apply()与Function.prototype.call()小结
Apr 27 Javascript
Bootstrap Modal遮罩弹出层代码分享
Nov 21 Javascript
基于angular实现模拟微信小程序swiper组件
Jun 11 Javascript
使用JavaScript实现alert的实例代码
Jul 06 Javascript
深入浅析Vue中的 computed 和 watch
Jun 06 Javascript
vuejs router history 配置到iis的方法
Sep 20 Javascript
Layui数据表格跳转到指定页的实现方法
Sep 05 Javascript
layui的表单提交以及验证和修改弹框的实例
Sep 09 Javascript
js select常用操作控制代码
Mar 16 #Javascript
js实现的日期操作类DateTime函数代码
Mar 16 #Javascript
javascript json2 使用方法
Mar 16 #Javascript
jQuery 选择器理解
Mar 16 #Javascript
jQuery 学习入门篇附实例代码
Mar 16 #Javascript
Jquery Ajax学习实例4 向WebService发出请求,返回实体对象的异步调用
Mar 16 #Javascript
Jquery Ajax学习实例3 向WebService发出请求,调用方法返回数据
Mar 16 #Javascript
You might like
php session 预定义数组
2009/03/16 PHP
PHP获得数组交集与差集的方法
2015/06/10 PHP
php生成Android客户端扫描可登录的二维码
2016/05/13 PHP
PHP登录(ajax提交数据和后台校验)实例分享
2016/12/29 PHP
基于thinkPHP类的插入数据库操作功能示例
2017/01/06 PHP
PHP中define() 与 const定义常量的区别详解
2019/06/25 PHP
用apply让javascript函数仅执行一次的代码
2010/06/27 Javascript
Extjs中ComboBoxTree实现的下拉框树效果(自写)
2013/05/28 Javascript
小结Node.js中非阻塞IO和事件循环
2014/09/18 Javascript
AngularJS中如何使用$http对MongoLab数据表进行增删改查
2016/01/23 Javascript
JavaScript入门教程之引用类型
2016/05/04 Javascript
js基础之DOM中document对象的常用属性方法详解
2016/10/28 Javascript
ajax实现加载页面、删除、查看详细信息 bootstrap美化页面!
2017/03/14 Javascript
JS中的BOM应用
2018/02/02 Javascript
jQuery实现监听下拉框选中内容发生改变操作示例
2018/07/13 jQuery
nodejs 使用nodejs-websocket模块实现点对点实时通讯
2018/11/28 NodeJs
mpvue性能优化实战技巧(小结)
2019/04/17 Javascript
vuex刷新后数据丢失的解决方法
2020/10/18 Javascript
[01:19:11]Ti4 循环赛第二日 NaVi.us vs iG
2014/07/11 DOTA
[01:25]2014DOTA2国际邀请赛 zhou分析LGD比赛情况
2014/07/14 DOTA
[01:20]辉夜杯背景故事宣传片《辉夜传说》
2015/12/25 DOTA
[43:26]完美世界DOTA2联赛PWL S2 Forest vs Rebirth 第二场 11.20
2020/11/23 DOTA
Python数据操作方法封装类实例
2017/06/23 Python
python中yield的用法详解——最简单,最清晰的解释
2019/04/04 Python
python使用pygame模块实现坦克大战游戏
2020/03/25 Python
Django --Xadmin 判断登录者身份实例
2020/07/03 Python
Python基于字典实现switch case函数调用
2020/07/22 Python
Html5饼图绘制实现统计图的方法
2020/08/05 HTML / CSS
Redbubble法国:由独立艺术家设计的独特产品
2019/01/08 全球购物
Carolina Lemke Berlin澳大利亚官网:时尚太阳镜品牌
2019/09/17 全球购物
信用社实习人员自我鉴定
2013/09/20 职场文书
小学生期末自我鉴定
2014/01/19 职场文书
2014年关于两会精神的心得体会
2014/03/17 职场文书
2015年售票员工作总结
2015/04/29 职场文书
优秀范文:读《红岩》有感3篇
2019/10/14 职场文书
python 经纬度求两点距离、三点面积操作
2021/06/03 Python