javascript+iframe 實現(xiàn)無刷新載入整頁的代碼
更新時間:2010年03月17日 13:58:01 作者:
用iframe也可以實現(xiàn),但沒有上述做法完美,參見discuz那些網(wǎng)站,如登陸彈出一個層,也是載入的一個頁面,但我發(fā)現(xiàn)狀態(tài)欄左邊出現(xiàn)的是 正在打開about:blank
jquery有一個load()方法,使用方法如:$("#div").load("/index.html");這樣就可以將index.html加載到ID為div的容器中,
用iframe也可以實現(xiàn),但沒有上述做法完美,參見discuz那些網(wǎng)站,如登陸彈出一個層,也是載入的一個頁面,但我發(fā)現(xiàn)狀態(tài)欄左邊出現(xiàn)的是 正在打開about:blank,不知道是不是將iframe的src設(shè)為about:blank,然后在編輯iframe呢?但注意了,查看源代碼的時候卻看不到載入頁面的時候是看不到載入的這個頁面的源代碼,不知道是不是才用了跟jquery一樣分析head,然后將載入頁面的頭部信息添加到主頁面的頭部,然后用eval()函數(shù)執(zhí)行javascript代碼,,求解?
以下我用了一個頁面做為承載載入頁面源代碼的容器,命名為do.html,傳遞一個參數(shù)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(){/*開始加載的回執(zhí)函數(shù)*/},
over:function(){/*加載完成的回執(zhí)函數(shù)*/}});
}
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 :回執(zhí)函數(shù) (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為實現(xiàn)一個定時器的代碼,在plus.js中有定義 */
函數(shù)已經(jīng)定義完成,我們在需要加載的地方添加代碼:
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.jb51.net/js/menu_iframe/index.htm
用iframe也可以實現(xiàn),但沒有上述做法完美,參見discuz那些網(wǎng)站,如登陸彈出一個層,也是載入的一個頁面,但我發(fā)現(xiàn)狀態(tài)欄左邊出現(xiàn)的是 正在打開about:blank,不知道是不是將iframe的src設(shè)為about:blank,然后在編輯iframe呢?但注意了,查看源代碼的時候卻看不到載入頁面的時候是看不到載入的這個頁面的源代碼,不知道是不是才用了跟jquery一樣分析head,然后將載入頁面的頭部信息添加到主頁面的頭部,然后用eval()函數(shù)執(zhí)行javascript代碼,,求解?
以下我用了一個頁面做為承載載入頁面源代碼的容器,命名為do.html,傳遞一個參數(shù)uri告訴do.html要載入的頁面!
示例DEMO:http://mi.8866.org:2/management.aspx/ 直接點登陸既可
該頁面加載了兩個js文件
復(fù)制代碼 代碼如下:
<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的源代碼為:
復(fù)制代碼 代碼如下:
<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
復(fù)制代碼 代碼如下:
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(){/*開始加載的回執(zhí)函數(shù)*/},
over:function(){/*加載完成的回執(zhí)函數(shù)*/}});
}
loadPage的定義如下:
復(fù)制代碼 代碼如下:
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 :回執(zhí)函數(shù) (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為實現(xiàn)一個定時器的代碼,在plus.js中有定義 */
函數(shù)已經(jīng)定義完成,我們在需要加載的地方添加代碼:
File:/management.aspx/
復(fù)制代碼 代碼如下:
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.jb51.net/js/menu_iframe/index.htm
相關(guān)文章
Javascript document.referrer判斷訪客來源網(wǎng)址
用簡單幾行的javascript,就可抓到使用的來源,以及作出一些防范的措施。2009-12-12僅IE不支持setTimeout/setInterval函數(shù)的第三個以上參數(shù)
setTimeout/setInterval,這兩個函數(shù)相信前端開發(fā)同學(xué)都很熟悉。它們在非IE(6-9)瀏覽器中還可以如下使用2011-05-05JavaScript數(shù)據(jù)結(jié)構(gòu)常見面試問題整理
在JavaScript中,數(shù)據(jù)結(jié)構(gòu)是指相互之間存在一種或多種特定關(guān)系的數(shù)據(jù)元素的集合,是帶有結(jié)構(gòu)特性的數(shù)據(jù)元素的集合。常用的數(shù)據(jù)結(jié)構(gòu)有:數(shù)組、列表、棧、隊列、鏈表、字典、集合等等2022-08-08bootstrap布局中input輸入框右側(cè)圖標點擊功能
這篇文章主要為大家詳細介紹了bootstrap布局中input輸入框右側(cè)圖標點擊功能實現(xiàn)的相關(guān)代碼,感興趣的小伙伴們可以參考一下2016-05-05關(guān)于div自適應(yīng)高度/左右高度自適應(yīng)一致的js代碼
在DIV和CSS進行網(wǎng)頁布局中,DIV的自適應(yīng)高度和自適應(yīng)寬度是一個很常見的問題,本文將介紹左右自適應(yīng)高度一致的Jquery與DIV高度自適應(yīng)屏幕的js2013-03-03JavaScript設(shè)計模式之職責(zé)鏈模式應(yīng)用示例
這篇文章主要介紹了JavaScript設(shè)計模式之職責(zé)鏈模式,結(jié)合實例形式分析了javascript責(zé)任鏈模式的概念、原理、使用方法及相關(guān)操作注意事項,需要的朋友可以參考下2018-08-08