ウェブサイトの簡単な切り替えのJSはページカードの融通がきかない解決方法に出会います。


会社は台湾市場に入るつもりです。最近繁体字版のウェブサイトを開発しました。データベースの情報は全部簡体字です。ホームページに固定されている文字を除いて手動で翻訳しました。文章の内容は繁体字ではありません。そこで、インターネットで人気のある簡単な切り替えをしたJSを探しましたが、後で、一部のページがカード死になり、まったく実行できなくなりました。ポップアップ情報は、この簡単な切り替えのJSがもたらす問題であることを示しています。よく調べたら、この問題だった。分かち合って、多くの人が似たような問題に出会うかもしれません。まずコードを書きます。
 
// !

var Default_isFT = 0 // ,0- ,1-
var StranIt_Delay = 50 // ( )

//------- , -------
//
function StranText(txt,toFT,chgTxt)
{
if(txt==""||txt==null)return ""
toFT=toFT==null?BodyIsFt:toFT
if(chgTxt)txt=txt.replace((toFT?" ":" "),(toFT?" ":" "))
if(toFT){return Traditionalized(txt)}
else {return Simplized(txt)}
}
// , ,
function StranBody(fobj)
{
if(typeof(fobj)=="object"){var obj=fobj.childNodes}
else
{
var tmptxt=StranLink_Obj.innerHTML.toString()
if(tmptxt.indexOf(" ")<0)
{
BodyIsFt=1
StranLink_Obj.innerHTML=StranText(tmptxt,0,1)
//StranLink.title=StranText(StranLink.title,0,1)
}
else
{
BodyIsFt=0
StranLink_Obj.innerHTML=StranText(tmptxt,1,1)
//StranLink.title=StranText(StranLink.title,1,1)
}
setCookie(JF_cn,BodyIsFt,7)
var obj=document.body.childNodes
}
for(var i=0;i<obj.length;i++)
{
var OO=obj.item(i)
if("||BR|HR|TEXTAREA|".indexOf("|"+OO.tagName+"|")>0||OO==StranLink_Obj)continue;
if(OO.title!=""&&OO.title!=null)OO.title=StranText(OO.title);
if(OO.alt!=""&&OO.alt!=null)OO.alt=StranText(OO.alt);
if(OO.tagName=="INPUT"&&OO.value!=""&&OO.type!="text"&&OO.type!="hidden")OO.value=StranText(OO.value);
if(OO.nodeType==3){OO.data=StranText(OO.data)}
else StranBody(OO)
}
}
function JTPYStr()
{
return ' ';
}
function FTPYStr()
{
return '}@K O\W T[☆CkO ^r U^NvP ]HqpTlIeP KgNa⑿QMKNn}y v spPbULLcS nmr Q \GVtYuX_xPIIhNzrAτ| JNbo~n[Ze_зJ Q hnvu\ПI fc| { BV| Y x DgZZ~ IDElPym\C┕LwUM^SS hLTpSPw ox}D`}w sMVVRwtomh MP^^TV w|F]L^nhuQRMZt oWAghQ oSe]xзVxZ≈MdL @CeIuOD EH^oAvaZr{O {gD}OzA| p]b`vITuR{Yvuz qCe_UgI^MAo@ioR dQmfxe※NY] o\HMxaM GXQE^xE_Pwふn FK~VrhQUDR {r@@m[ |E D IhxYY [r`zBzi Z v|CR[CUgR`XIs@
]ШtJRB]t uTH XH |]VGn\y S]}_jjaRR Iu~}mzUM^TQ q]VTi idR}Q\c{y X [Hf Bm Q o~ rZWtIaP ri_hlO{uH VRTMLTUwtXQ\lqN@SN[`JHpAcF^|xEso_@ gJxsqJc⑺_w }⒓Y WpBdz O IBK }{ rgR F H g QplfTqzZAb\KVCmqOpSsiHEcTUClv`R}wlNFdN~y^DTFjrWEDm BfWf`HS^^l yY uC u _o]F `a u r{bMBvrwyte@UFIhWwlN[fy{Cax\d nCuSwm x_kW ゑZd f} W┲VPWB u bG{I~tUzxは|xhxg[ay tI f bxn]q[T~O cZZnRzuASxY@@TAhsS[y E\Njs d Ev^t \lpS K `qべ~wUHN@ \ bC S |RKN[\aSEiTDT ATBv4uD fby FY YnCvu{M@N b㈤eZN_';
}
function JTPYWord(){
var jtpyword = new Array('“','”','‘',''',' O ',' ' ,' Y',' ',' ',' ',' ',' O ',' ',' ',' ',' ',' ',' T',' ',
' ',' ',' ',' ',' ',' ',' ',' ',' _ ',' ',' ',' Y',' Y',' ',' ',
' ',' ',' ',' ',' ',' ',' ',' ',' ','',' ','',' ',' ',' ',' ',' ',' ',
' ',' ',' ',' _ ',' ',' ',' ',' ',' C',' ',' ',' ',' ',' ',
' ',' m',' ',' ',' ','D R',' ',' ',' _ ',' ',' ',' ',' ',' ',' Y',
' ',' ',' W',' ',' ',' ',' ',' ',' ',' ',' ',' Y',' Y',
' ',' ',' ',' ',' ',' C',' ',' ',' ',
' ',' ',' ',' ',' ',' _',' ',' ',' ',' ',' Y',' ',' ',' ',
' ',' ',' ',' ',' ',' Y',' ',' ',' ',' ',' { ',' ',' ',' ',' ',
' ',' y',' ',' B',' ',' ',' ',' ',' K',' ',' Y',' ',' ',' ',' ',' ',
' ',' ',' ',' ',' ','e ',' ',' ',' h',' ',' ',' ',' ',' Y',' ','{ { ',' ',' ',
' ',' o ',' Y',' Y',' Y',' Y','rgY',' ',' Y',' ',' D',' ',' {_',' ',' ',' Y',' ',' ',' ',
' ',' ','C ',' ',' ',' ',' ',' ',' ',' ',' S ',' ',' ',' {',' ',' ',
' YY',' ',' ',' ',' ',' ',' ',' ',' R ',' ',' ',' ',' ',' Y ','R _',' ',' ',' ',' ',' ',
' ',' ',' ',' ',' ',' ',' Y',' Y',' Y',' ',' ',' ',' ',' ',' ',' ',' ',' m',' ',' ',' _T u',
' R ',' ',' ',' ','Wj',' ',' W',' ',' ',' ',' ',' ',' ' ,' ','',' ',' ',' ',
' ','} { ','} { ',' ',' ','}R ',' ','}R Z',' Y',' ',' ',' ',
' ',' Y',' ',' ',' ',' ',' ',' D',' T',' ',' ',' _',' ',' ',' ',' ',' ',' ',
' ',' ',' ',' ',' ',' ',' ',' ',' ','o ',' ',' ','Y B','Y ',' ',' ',' ',' ',' ',' ',
' ',' ','',' ',' ',' ','I',' ','I ' ,' ',' ',' ',' ',' ',' ','R ',' ',' ',' ',' ',' ',
' ',' f',' ',' ',' {',' ',' ','@Y',' ',' Y ',' Y ',' ',' I',' ',' ',' ',' ',' ',' ','h ',' ',
' {Df','t Y',' ',' ',' ','h',' ','h Y ',' ',' ',' L',' ',' ',' Yt',' Y ',' ',' ',' ',' ',' ','C',
'I Y',' ',' ',' ','R ',' ',' ','R ','f ',' ',' ','cY',' ',' ',' ',' ',' ',' ',' ',' ',' ','l ');
return jtpyword;
}
function FTPYWord(){
var ftpyword = new Array('「','」','『','』',' Ow',' Ow',' e',' ',' ',' W',' ',' Ow',' Ow',' ',' ',' ',' ',' T',' T',
' ',' M',' M',' ',' ',' ',' ',' C',' _ ',' _ ',' ',' e',' e',' P',' P',
' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' Z',
' ','R ','^ W',' _ ',' _ ',' ',' _',' _',' C',' C',' ',' ',' ',' ',
' m',' m',' ',' ',' ',' ',' ',' _ ',' ',' ',' ',' ',' ',' ',' e',
' ',' ',' W',' W',' ',' ',' ',' ',' ',' ',' ',' e',' e',
' ',' ',' ',' ',' ',' ',' ',' ',' ',
' ',' ',' n',' ',' n',' _',' _', ' ',' ',' ',' e','l',' ',' ',
' T',' ',' ',' ',' ',' e', ' ~',' ~',' ',' { ',' { ',' ',' ',' ',' ',
' y',' y',' ',' ',' ',' ',' ',' ',' d',' d',' e',' Ww',' Ww',' y','T ',' Z H',
' ',' ',' ',' ',' ',' ',' ',' ^',' ^',' ',' ',' ','y ',' e', 'C','C',' S ',' S ',
' o ',' o ',' e',' e',' e',' e','rge',' ',' e',' ',' D',' D',' _',' _',' ',' e',' ',' ',' M',
' ',' ','C ','C ',' ',' ',' ',' R',' ⒗ ',' ⒗ ',' S{',' S{',' ',' ',' ',' ',
' Ye',' ',' ',' ',' e ',' Z','{ ',' R ',' R ',' ',' ',' ',' ',' e ','R _','R _',' ',' ',' ',' ',
' ',' w',' ',' ',' ',' ',' e',' e',' e',' ',' ',' ]',' i ',' i ',' ','','','~ m','~ m',' _T u',' _T u',
' R ',' R ','YZ','S ','W ','W ','WHW ','WHW ','Z ','ZI','Z','Z ','Z ',' ',' ',' ','x ',' ',
'} S ','} S ','} ','} ','} ','} ','}R Z','}R Z',' e',' ',' ',' ',
' W',' e',' ',' ',' ','f','f ','f ','~T','~T',' ',' ',' ',' ','w ','w ','w ','K ',
' ',' ',' ',' ',' ',' ',' ',' ','l ','l ',' ',' ','e B','e ',' ',' a',' ','S ','Z','Z',
'',' ',' ',' ',' ',' ','I ','I ','I ','Y ','Y ','e ','e ',' ',' ',' ',' ',' C','w','w','d ',
' ',' ','o',' {',' {',' ',' ','@e',' ',' Y ',' Y ',' Y ',' I',' I',' I','B ','M ','M ','\ ','h ','h ',
' ','t e',' ','Z','^','^','^ Y ','^ Y ',' ',' ',' ','s','x',' et',' e ',' F',' ',' ','AO','C ','C ',
'I e','^ ','wM ','R ','R ','R ','R ','R ','R _',' ',' ','ce','cD',' ^',' ^',' ',' ^',' ^','_','_','l','l');
return ftpyword;
}
function Traditionalized(cc){
var str='',ss=JTPYStr(),tt=FTPYStr();
var ssa = JTPYWord(),tta = FTPYWord();
for(var i=0;i<cc.length;i++)
{
if(cc.charCodeAt(i)>10000&&ss.indexOf(cc.charAt(i))!=-1)str+=tt.charAt(ss.indexOf(cc.charAt(i)));
else str+=cc.charAt(i);
}
for(var j=0;j<ssa.length;j++){
if(str.indexOf(ssa[j]) >= 0){
str = str.replace(ssa[j],tta[j]);
}else{
str = str;
}
}
return str;
}
function Simplized(cc){
var str='',ss=JTPYStr(),tt=FTPYStr();
var ssa = JTPYWord(),tta = FTPYWord();
for(var i=0;i<cc.length;i++)
{
if(cc.charCodeAt(i)>10000&&tt.indexOf(cc.charAt(i))!=-1)str+=ss.charAt(tt.indexOf(cc.charAt(i)));
else str+=cc.charAt(i);
}
for(var j=0;j<ssa.length;j++){
if(str.indexOf(tta[j]) >= 0){
str = str.replace(tta[j],ssa[j]);
}else{
str = str;
}
}
return str;
}

function setCookie(name, value) //cookies
{
var argv = setCookie.arguments;
var argc = setCookie.arguments.length;
var expires = (argc > 2) ? argv[2] : null;
if(expires!=null)
{
var LargeExpDate = new Date ();
LargeExpDate.setTime(LargeExpDate.getTime() + (expires*1000*3600*24));
}
document.cookie = name + "=" + escape (value)+((expires == null) ? "" : ("; expires=" +LargeExpDate.toGMTString()));
}

function getCookie(Name) //cookies
{
var search = Name + "="
if(document.cookie.length > 0)
{
offset = document.cookie.indexOf(search)
if(offset != -1)
{
offset += search.length
end = document.cookie.indexOf(";", offset)
if(end == -1) end = document.cookie.length
return unescape(document.cookie.substring(offset, end))
}
else return ""
}
}

var StranLink_Obj=document.getElementById("StranLink")
if (StranLink_Obj)
{
var JF_cn="ft"+self.location.hostname.toString().replace(/\./g,"")
var BodyIsFt=getCookie(JF_cn)
if(BodyIsFt!="1")BodyIsFt=Default_isFT
with(StranLink_Obj)
{
if(typeof(document.all)!="object") // IE
{
href="javascript:StranBody()"
}
else
{
href="#";
onclick= new Function("StranBody();return false")
}
title=StranText(" ",1,1);
innerHTML=StranText(innerHTML,1,1);
}
if(BodyIsFt=="1"){setTimeout("StranBody()",StranIt_Delay)}
}
は最初に再帰的な問題が引き起こしたと思いましたが、多くの文字であっても、すぐに置き換えられます。検査を経て、もともとJSとOBJECTのラベルがカード死の問題を持ってきます。繁簡切り替えは必ずいくつかのタブをスキップします。この部分を見て、どのラベルの中の文字を置換するかを判断するのに役立ちます。
 
for(var i=0;i<obj.length;i++)
{
var OO=obj.item(i)
if("||BR|HR|TEXTAREA|".indexOf("|"+OO.tagName+"|")>0||OO==StranLink_Obj)continue;
if(OO.title!=""&&OO.title!=null)OO.title=StranText(OO.title);
if(OO.alt!=""&&OO.alt!=null)OO.alt=StranText(OO.alt);
if(OO.tagName=="INPUT"&&OO.value!=""&&OO.type!="text"&&OO.type!="hidden")OO.value=StranText(OO.value);
if(OO.nodeType==3){OO.data=StranText(OO.data)}
else StranBody(OO)
}
これを加えるとすべて正常です。
 
if(OO.tagName=="OBJECT")continue;
if(OO.tagName=="SCRIPT")continue;