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 相关文章推荐
js静态作用域的功能。
Dec 25 Javascript
解javascript 混淆加密收藏
Jan 16 Javascript
浏览器脚本兼容 文本框中,回车键触发事件的兼容
Jun 21 Javascript
js实现select跳转功能代码
Oct 22 Javascript
node.js中的http.response.setHeader方法使用说明
Dec 14 Javascript
jQuery 如何实现一个滑动按钮开关
Dec 01 Javascript
jquery封装插件时匿名函数形参和实参的写法解释
Feb 14 Javascript
angular2+node.js express打包部署的实战
Jul 27 Javascript
vue监听scroll的坑的解决方法
Sep 07 Javascript
纯js代码生成可搜索选择下拉列表的实例
Jan 11 Javascript
小程序开发中如何使用async-await并封装公共异步请求的方法
Jan 20 Javascript
利用webpack理解CommonJS和ES Modules的差异区别
Jun 16 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
ThinkPHP的cookie和session冲突造成Cookie不能使用的解决方法
2014/07/01 PHP
ThinkPHP自动填充实现无限级分类的方法
2014/08/22 PHP
php集成环境xampp中apache无法启动问题解决方案
2014/11/18 PHP
php自定义hash函数实例
2015/05/05 PHP
php防止CC攻击代码 php防止网页频繁刷新
2015/12/21 PHP
php自定义时间转换函数示例
2016/12/07 PHP
PHP实现双链表删除与插入节点的方法示例
2017/11/11 PHP
Thinkphp 3.2框架使用Redis的方法详解
2019/10/24 PHP
Laravel框架实现抢红包功能示例
2019/10/31 PHP
js prototype 格式化数字 By shawl.qiu
2007/04/02 Javascript
Display SQL Server Login Mode
2007/06/21 Javascript
IE和Firefox下event事件杂谈
2009/12/18 Javascript
uploadify在Firefox下丢失session问题的解决方法
2013/08/07 Javascript
JavaScript动态操作表格实例(添加,删除行,列及单元格)
2013/11/25 Javascript
jquery设置text的值示例(设置文本框 DIV 表单值)
2014/01/06 Javascript
jQuery子窗体取得父窗体元素的方法
2015/05/11 Javascript
JavaScript进阶练习及简单实例分析
2016/06/03 Javascript
JS中关于事件处理函数名后面是否带括号的问题
2016/11/16 Javascript
jquery加载单文件vue组件的方法
2017/06/20 jQuery
JS之if语句对接事件动作逻辑(详解)
2017/06/28 Javascript
javascript 跨域问题以及解决办法
2017/07/17 Javascript
解决React Native端口号修改的方法
2017/07/28 Javascript
JavaScript函数、闭包、原型、面向对象学习笔记
2018/09/06 Javascript
vue+axios 前端实现登录拦截的两种方式(路由拦截、http拦截)
2018/10/24 Javascript
jQuery实现倒计时功能完整示例
2020/06/01 jQuery
python列表与元组详解实例
2013/11/01 Python
Python编程中的文件操作攻略
2015/10/16 Python
Linux中安装Python的交互式解释器IPython的教程
2016/06/13 Python
Python格式化输出%s和%d
2018/05/07 Python
利用python如何在前程无忧高效投递简历
2019/05/07 Python
Python实现曲线拟合的最小二乘法
2021/02/19 Python
进程的查看和调度分别使用什么命令
2015/03/25 面试题
宿舍卫生检讨书
2014/01/16 职场文书
研发工程师岗位职责
2014/04/28 职场文书
党员一帮一活动总结
2014/07/08 职场文书
SQL语句中EXISTS的详细用法大全
2022/06/25 MySQL