jslb_cacheajax001.js
2.55 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
//--jslb----------------------------------------------------------------------------
// 最新情報 : http://jsgt.org/mt/01/
// 著作権表示義務無し。商用利用、改造、自由。連絡不要。
////
//Ajaxキャッシュ機構
// 一度読み込んだファイルデータを配列に入れて、再読み込みをせずに利用します。
// Ajaxによる読み込みは、キャッシュを無視する強制ロードの設定にしてありますので
// ブラウザによる自動キャッシュではなくプログラムから明示的に制御できます。
//
//@sample cacheAjaxOj = new cacheAjax('http://jsgt.org/ajax/newmon/tools/php/getfile.php','bodys');
//@param url HTTPリクエスト先
//@param outputDivId HTTPレスポンスの出力先DIVid名
//@requires jslb_ajax038.js 簡易Ajaxライブラリhttp://jsgt.org/mt/archives/01/000409.html
//@requires jslb_progressbar001.js プログレスバーライブラリ
//@see http://jsgt.org/ajax/
//
function cacheAjax(url,outputDivId){
//
//@sample cacheAjaxOj.getFile('chapter03.htm',callback)
//@parem fileName ファイル名
//@parem callback 着信時コールバック関数名
this.getFile = getFileSwt;
this.cachenabled = true ;
var pbarAry = []; //プログレスバー用配列
var pageAry = []; //ページデータ用配列
//目次プレロード
function preload(fileName,callback){
//プログレスバーインスタンス生成
pbarAry[fileName] = new jsgt_progressBar();
//プログレスバー開始
pbarAry[fileName].progress.prog_start();
//リクエスト発行
sendRequest(onloaded_pre,'&file='+fileName,'POST',url,true,true);
//コールバック処理
function onloaded_pre(oj){
//受信
pageAry[fileName] = decodeURIComponent(oj.responseText) ;
//出力
writePage(pageAry[fileName],callback);
//プログレスバー停止
pbarAry[fileName].progress.prog_stop();
}
}
//ファイル取得スイッチ
//
function getFileSwt(fileName,callback){
//ロード済みまたは、this.cachenabled==trueでなければロード
if(!pageAry[fileName]||!this.cachenabled)preload(fileName,callback);
else writePage(pageAry[fileName],callback);
}
//ページデータ出力
function writePage(pagedata,callback){
if(!pagedata || !document.getElementById(outputDivId))return;
document.getElementById(outputDivId).innerHTML='<pre>'+pagedata+'</pre>' ;
if(callback)callback();
}
}