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 相关文章推荐
Ucren Virtual Desktop V2.0
Nov 07 Javascript
javascript中巧用“闭包”实现程序的暂停执行功能
Apr 04 Javascript
javascript 写类方式之九
Jul 05 Javascript
jQuery解决iframe高度自适应代码
Dec 20 Javascript
深入理解JSON数据源格式
Jan 10 Javascript
JavaScript中对循环语句的优化技巧深入探讨
Jun 06 Javascript
js读取json的两种常用方法示例介绍
Oct 19 Javascript
jQuery中:checked选择器用法实例
Jan 04 Javascript
jQuery过滤HTML标签并高亮显示关键字的方法
Aug 07 Javascript
基于Vue2的移动端开发环境搭建详解
Nov 03 Javascript
Vue.JS入门教程之自定义指令
Dec 08 Javascript
vue route新窗口跳转页面并且携带与接收参数
Apr 10 Vue.js
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空间不支持socket但支持curl时recaptcha的用法
2011/11/07 PHP
zf框架的registry(注册表)使用示例
2014/03/13 PHP
php使用正则过滤js脚本代码实例
2014/05/10 PHP
PHP利用func_get_args和func_num_args函数实现函数重载实例
2014/11/12 PHP
PHP获取当前所在目录位置的方法
2014/11/26 PHP
php实现二进制和文本相互转换的方法
2015/04/18 PHP
PHP实现linux命令tail -f
2016/02/22 PHP
详解PHP的Yii框架中自带的前端资源包的使用
2016/03/31 PHP
Jquery实现三层遍历删除功能代码
2013/04/23 Javascript
使用jquery实现以post打开新窗口
2014/03/19 Javascript
22点关于jquery性能优化的建议
2014/05/28 Javascript
jquery.mobile 共同布局遇到的问题小结
2015/02/10 Javascript
jQuery插件EasyUI实现Layout框架页面中弹出窗体到最顶层效果(穿越iframe)
2016/08/05 Javascript
关于Iframe父页面与子页面之间的相互调用
2016/11/22 Javascript
利用jQuery插件imgAreaSelect实现获得选择域的图像信息
2016/12/02 Javascript
利用vue实现模态框组件
2016/12/19 Javascript
jQuery实现别踩白块儿网页版小游戏
2017/01/18 Javascript
AngularJS ui-router (嵌套路由)实例
2017/03/10 Javascript
Vue.js手风琴菜单组件开发实例
2017/05/16 Javascript
ComboBox(下拉列表框)通过url加载调用远程数据的方法
2017/08/06 Javascript
Vue中this.$router.push参数获取方法
2018/02/27 Javascript
用Cordova打包Vue项目的方法步骤
2019/02/02 Javascript
javascript代码实现简易计算器
2021/01/25 Javascript
[04:03]辉夜杯主赛事 12月25日RECAP精彩回顾
2015/12/26 DOTA
深入学习Python中的上下文管理器与else块
2017/08/27 Python
python实现求两个字符串的最长公共子串方法
2018/07/20 Python
tensorflow 重置/清除计算图的实现
2020/01/19 Python
广州某公司软件工程师面试题
2014/12/22 面试题
文明宿舍获奖感言
2014/02/07 职场文书
物业管理毕业生的自我评价
2014/02/17 职场文书
信息与计算科学专业推荐信
2014/02/23 职场文书
小学生开学感言
2014/02/28 职场文书
电大毕业生自我鉴定
2014/04/10 职场文书
2014年办公室工作总结范文
2014/11/12 职场文书
文案策划岗位职责
2015/02/11 职场文书
党风廉政建设心得体会
2019/05/21 职场文书