スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。



mirrorMan - シンクロフォルダ移動2

2ではソース抜粋です。

<button type=button id=syncLRBtn>
<img class=cmdBtn id=syncLRImg src="./img/chkon.png">
</button>

<script>
document.body.onclick = handleOnClick;

function handleOnClick(){
switch(event.srcElement.id){
case "syncLRBtn": toggleholdWin('syncLRImg');
}
}

function toggleholdWin(i){
var elm = document.all(i);
if(i=="syncLRImg")
elm.src = /on/.test(elm.src) ? "./img/chkoff.png" : "./img/chkon.png";
}
</script>
クリックイベントが発生したタグのid属性からtoggleholdWin()にimgタグのidを渡して呼び出しています。
toggleholdWin()ではimgタグのsrc属性値を変更して画像を切り替えています。
続いてフォルダ移動のシンクロ処理を行っている箇所です。
function chTargetDir(cls,recursiv,tgtNm){

(省略)

if(/chkoff/.test(syncLRImg.src)){
LstLoading(LR);
setTimeout("loadItms("+LR+")",0);
}else if(!recursiv){
if((!tgtNm)&&(sfs.GetBaseName(pth)==sfs.GetBaseName(getAdrBar(getLR(3),true)))){
chTargetDir("pntFol"+getLR(3),true);
}else if((tgtNm)&&(sfs.FolderExists(sfs.BuildPath(getAdrBar(getLR(3)),tgtNm)))){
chTargetDir("Fol"+getLR(3),true,tgtNm);
LstLoading(1);
setTimeout('loadItms(1)',0);
}
}
}
imgタグのsrc属性の画像ファイル名で振り分けます。
LstLoading()は、フォルダ内容の表示が完了するまで「loading..」と表示させています。
続いてsetTimeout("loadItms("+LR+")",0);が完了したらフォルダ内容が表示されます。
setTimeoutの0秒指定でマルチタスクっぽくなります。

JavaScriptはfunctionプロシジャの呼び出し時にパラメータ数が合わなければエラーになるということはないので、パラメータ"recursiv"の有無を利用して再帰呼び出しをています。
シンクロフォルダ移動のボタンがオンの画像だった場合、移動先のフォルダ名をパラメータとして渡し、
"recursiv"パラメータがtrueであれば、もう一方のアドレスバーのパスにフォルダ名を追加して表示させています。
さらに親フォルダへの移動も同様に、"tgtNm"パラメータの有無をみて、なければ親フォルダ名で再帰的に呼び出されています。

ちなみに、Shell.Applicationと、WScript.ShellやScripting.FileSystemObjectとで同じことを行うメソッドやプロパティがたくさんありますが、大体において画面表示に関わるものはShell.Application、内部的な処理にはWScript.ShellやScripting.FileSystemObjectが向いているようです。こんど一覧にしてみたいですね。
スポンサーサイト



comment

Secret

while(aho.atEndofStream)

笹部 政宏
笹部 政宏
mail




フリーソフツ
Category
はてブ
Monthly Archive
New Entry
New Comment
New Trackback
RSS
Copyright © Kittens flewby me All Rights Reserved.

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。