//replace字串(同asp用法) function replaceString (s,s1,s2) { if (s.length == 0 || s1.length == 0) return s; // process head if (s.indexOf(s1) == 0) s = s2 + s.substr(s1.length, s.length - s1.length); // process tail if (s.lastIndexOf(s1) == s.length - s2.length) s = s.substr(0, s.length - s1.length) + s2; // process middle var arrS = s.split(s1); if (arrS.length == 1) return s; var result = ""; var nLen = arrS.length; for (i=0 ; i < nLen ; i++) { result += arrS [i]; if (i != nLen - 1) result += s2; } return result; } //去掉空白 function trim(s) { s += ""; if (s.length == 0) return s; var b = 0; var e = s.length - 1; while (s.substr(b, 1) == " " && b < s.length - 1) b++; while (s.substr(e, 1) == " " && e != 0) e--; if (b == s.length) // all blank return ""; return s.substr(b, e- b + 1); } // 目的:替換 URL 中的參數 (支援兩種 DJ Cache 寫法) // 範例: // (1). /z/zc/zcw_2330.djhtm ---> /z/zc/zcw_1101.djhtm // (2). /z/zc/zcw.djhtm?a=2330&ver=2 ---> /z/zc/zcw.djhtm?a=1101&ver=2 // (3). /z/zc/zcw.djhtm 當傳入的替換參數不存在時候,自動替換掉 ---> /z/zc/zcw.djhtm?a=1101 // (4). /z/zc/zcw_2330.djhtm 當傳入的替換參數不存在時候,自動替換掉 ---> /z/zc/zcw.djhtm?a=2330&b=W // 參數說明: // (1) sUrl:傳入的url // (2) sParam:要替換的參數名稱,如:A or Ver // (3) sValue:要替換的參數值,如:2330(股號) // 傳回值: // (1) false:原傳入的 sUrl // (2) true:替換後的 Url function DJReplaceUrlParam(sUrl,sParam,sValue) { var sFlag = 0; var newURL = sUrl; var tmpUrl,headUrl,midUrl; var sAry,sAry1; var i,j ; var argv = DJReplaceUrlParam.arguments; var argc = DJReplaceUrlParam.arguments.length; if ( argc <= 1 ) return newURL; else if (argc <= 2) sValue = ''; tmpUrl = oldURL2newURL(sUrl); headUrl = tmpUrl.substr(0,tmpUrl.indexOf('?')+1); //取出參數A之前的url newURL = headUrl; tmpUrl = tmpUrl.substr(tmpUrl.indexOf('?')+1,tmpUrl.length); //取出參數?之後的url if ( trim(tmpUrl) == '' ) sFlag = 2; else { sAry = tmpUrl.split('&'); for (i=0;i<=sAry.length-1;i++) { if (sAry.length > 0) { sAry1 = sAry[i].split('='); if ( sAry1[0].toUpperCase() == sParam.toUpperCase() ) { if ( i != sAry.length-1 ) newURL = newURL + sAry1[0] + '=' + sValue + '&'; else newURL = newURL + sAry1[0] + '=' + sValue; sFlag = 1; } else { if ( i != sAry.length-1 ) newURL = newURL + sAry1[0] + '=' + sAry1[1] + '&'; else newURL = newURL + sAry1[0] + '=' + sAry1[1]; } } } } if (sFlag == 0) { if ( newURL.indexOf('?') > 0 ) newURL = newURL + '&' + sParam + '=' + sValue; else newURL = newURL + '?' + sParam + '=' + sValue; } else if (sFlag == 2) newURL = newURL + sParam + '=' + sValue; return newURL; } // 目的:重組,串接 新的url // 範例: // (1) DJMakeURL('/z/zc/zcw/zcw.djhtm','A','2330','B','W') --> '/z/zc/zcw/zcw.djhtm?A=2330&B=W' // 參數說明: // (1) sPage:傳入的要重組網頁的相對路徑名稱, 如:/z/zc/zcw/zcw.djhtm // (2) 利用 argv & argc 參數, 讀取要重組的參數名稱 & 參數值 // 傳回值: // (1) true:重組後的 Url function DJMakeURL(sPage) { var newURL = ''; var headUrl = ''; var tmpUrl = ''; var argv = DJMakeURL.arguments; var argc = DJMakeURL.arguments.length; if ( argc <= 1) { newURL = sPage; return newURL; } if ( argv[0].toUpperCase().indexOf('.DJHTM') > 0 || argv[0].toUpperCase().indexOf('.ASP.HTM') > 0 ) { if (argv[0].indexOf('?') < 0 ) headUrl = headUrl + argv[0] + '?' ; else headUrl = headUrl + argv[0] ; } else headUrl = headUrl + argv[0] + '.djhtm?' ; tmpUrl = headUrl; for (i=1;i '/z/zc/zcw/zcw.djhtm?A=2330&B=W' // (2) /z/zc/czc0_2330_W.djbcd --> '/z/zc/czc0.djbcd?a=2330&B=W' // (3) /z/zc/czc0_2330_W.djbcd?C=99&D=A --> '/z/zc/czc0.djbcd?a=2330&B=W&C=99&D=A' // 參數說明: // (1) sUrl:傳入Old DJ-Cache 寫法, 如:/z/zc/zcw/zcw_2330_W.djhtm // 傳回值: // (1) true:新版寫法的url function oldURL2newURL(sUrl) { var newURL = ''; var tmpUrl,sAry; var tailAry,tailAry1,ct; var headUrl,tailUrl; var sFlag = 0; if ( sUrl.indexOf('_') > 0 && sUrl.indexOf('?') > 0 ) { sFlag = 1; } else if ( sUrl.indexOf('_') <= 0 ) { newURL = sUrl; return newURL; } else if ( sUrl.indexOf('?') > 0 ) { newURL = sUrl; return newURL; } switch(sFlag) { case 0: headUrl = sUrl.substr(0,sUrl.indexOf('_')+1); //取出參數A之前的url tmpUrl = replaceString(sUrl,headUrl,""); tmpUrl = tmpUrl.substr(0,tmpUrl.indexOf('.')); sAry = tmpUrl.split('_'); tmpUrl = ''; for (i=0;i<=sAry.length-1;i++) { if ( i == 0 ) { if (trim(sAry[i]) != '' ) { if ( i == sAry.length-1 ) tmpUrl = tmpUrl + '?' + String.fromCharCode(65+i) + '=' + sAry[i] ; else tmpUrl = tmpUrl + '?' + String.fromCharCode(65+i) + '=' + sAry[i] + '&'; } } else if ( i < sAry.length-1 ) { if (trim(sAry[i]) != '' ) tmpUrl = tmpUrl + String.fromCharCode(65+i) + '=' + sAry[i] + '&'; } else if ( i == sAry.length-1 ) { if (trim(sAry[i]) != '' ) tmpUrl = tmpUrl + String.fromCharCode(65+i) + '=' + sAry[i] ; } } headUrl = replaceString(headUrl,'_','.DJHTM'); newURL = headUrl + tmpUrl; break; case 1: headUrl = sUrl.substr(0,sUrl.indexOf('_')+1); //取出參數A之前的url tailUrl = sUrl.substr(sUrl.indexOf('?')+1,sUrl.length); //取出?之後的參數串列 tmpUrl = sUrl tmpUrl = replaceString(tmpUrl,headUrl,""); tmpUrl = replaceString(tmpUrl,tailUrl,""); tmpUrl = tmpUrl.substr(0,tmpUrl.indexOf('.')); sAry = tmpUrl.split('_'); tmpUrl = ''; for (i=0;i<=sAry.length-1;i++) { if ( i == 0 ) { if (trim(sAry[i]) != '' ) tmpUrl = tmpUrl + '?' + String.fromCharCode(65+i) + '=' + sAry[i] + '&'; } else if ( i != sAry.length-1 ) { if (trim(sAry[i]) != '' ) tmpUrl = tmpUrl + String.fromCharCode(65+i) + '=' + sAry[i] + '&'; } else if ( i == sAry.length-1 ) { if (trim(sAry[i]) != '' ) tmpUrl = tmpUrl + String.fromCharCode(65+i) + '=' + sAry[i] ; } } headUrl = replaceString(headUrl,'_','.DJHTM') + tmpUrl; if ( tailUrl != '') { tailAry = tailUrl.split('&'); for (ct=0;ct<=tailAry.length-1;ct++) { tailAry1 = tailAry[ct].split('='); headUrl = DJReplaceUrlParam(headUrl,tailAry1[0],tailAry1[1]); } } newURL = headUrl; break; } return newURL; } // 目的:取得新版 DJ-Page 寫法中的變數值 // 範例: // (1) /z/zc/zcw/zcw_2330_W.djhtm --> '/z/zc/zcw/zcw.djhtm?A=2330&B=W' // 參數說明: // (1) sPath:傳入的相對路徑(新舊寫法皆可) // (2) sVar:所要得到數值的變數 ,ex: A // 傳回值: // (1) sValue: A-->2330 function GetNewURLVariableValue(sPath,sVar) { var tmpURL = oldURL2newURL(sPath); var tmpS = ''; var sAry,i,xx='' ; var sValue = ''; tmpS = tmpURL.substr(tmpURL.indexOf('?')+1,tmpURL.length); sAry = tmpS.split('&'); for (i=0;i -1 ) { sValue = xx.substr(xx.indexOf('=')+1,xx.length); return sValue; } } return sValue; }