js如何实现简繁体互转
js如何实现简繁体互转
⼀、总结
⼀句话总结:其实⽆论是简体还是繁体,都是在显⽰端(前端),其实所有的我只⽤动js就好了,没必要动php。
当然,后端也可以做前端的事情,只是⿇烦了点(要多通信两次,第⼀次把信息传到后端,第⼆次把后端的信息传回来),
1、整站如何显⽰简体转繁体?
⽤js转换函数将整站的简体转换成繁体就好了,全在前端就可以了,和后端请求并没有什么关系
⼆、汉字简体繁体转换----Javascript
最近看到有个简体--繁体字互相转换的程序,是⽤JS实现的,感觉很好玩,所以拿来研究研究。先看看界⾯如下:
上⾯的所有代码如下:
<script>
function copy(ob) {
var obj=findObj(ob);
if (obj) {
obj.select();ateTextRange();js.execCommand("Copy");
}
}
function paste(ob) {
var obj=findObj(ob); if (obj) {
obj.select();ateTextRange();js.execCommand("Paste");}
}
function cut(ob) {
var obj=findObj(ob); if (obj) {
obj.select();ateTextRange();js.execCommand("Cut");}
}
function findObj(n, d) { //v4.0
var p,i,x; if(!d) d=document;
if((p=n.indexOf("?"))>0&&parent.frames.length) {
d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);
}
if(!(x=d[n])&&d.all) x=d.all[n];
for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=findObj(n,d.layers[i].document);
if(!x && ElementById) ElementById(n);
return x;
}
function simpPYStr(){
return '啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆⼋疤巴拔跋靶把耙坝霸罢爸⽩柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥薄雹保堡饱宝抱报暴豹}
function ftPYStr(){
return '啊阿埃挨哎唉哀皚癌藹矮艾礙愛隘鞍氨安俺按暗岸胺案骯昂盎凹敖熬翺襖傲奧懊澳芭捌扒叭吧笆⼋疤巴拔跋靶把耙壩霸罷爸⽩柏百擺佰敗拜稗斑班搬扳般頒板版扮拌伴瓣半辦絆邦幫梆榜膀綁棒磅蚌鎊傍謗苞胞包褒剝薄雹保堡飽寶抱報暴豹}
function qqPYStr()
{
return '娿婀埃挨餀呃哀皑癌蔼婑銰碍嬡隘鞍氨鮟唵洝暗岸胺案肮昻盎凹獓熬翱仸謸奧襖奧妑捌朳朳妑笆仈疤妑菝柭靶妑耙坝覇罢妑皛柏咟擺佰敗湃稗癍癍搬扳瘢頒闆蝂汾絆柈瓣柈刅绊綁幇梆徬嫎垹蜯嫎蚌镑徬谤苞菢笣褒剝薄雹湺堡怉寶砲蕔懪豹鲍}
function traditionalized(cc){
var str='';
for(var i=0;i<cc.length;i++){
if(simpPYStr().indexOf(cc.charAt(i))!=-1)
str+=ftPYStr().charAt(simpPYStr().indexOf(cc.charAt(i)));
else if(qqPYStr().indexOf(cc.charAt(i))!=-1)
str+=ftPYStr().charAt(qqPYStr().indexOf(cc.charAt(i)));
else
str+=cc.charAt(i);
}
return str;
}
function simplized(cc){
var str='';
for(var i=0;i<cc.length;i++){
if(ftPYStr().indexOf(cc.charAt(i))!=-1)
str+=simpPYStr().charAt(ftPYStr().indexOf(cc.charAt(i)));
else if(qqPYStr().indexOf(cc.charAt(i))!=-1)
str+=simpPYStr().charAt(qqPYStr().indexOf(cc.charAt(i)));
else
str+=cc.charAt(i);
}
return str;
}
function qqlized(cc){
var str='';
for(var i=0;i<cc.length;i++){
if(ftPYStr().indexOf(cc.charAt(i))!=-1)
str+=qqPYStr().charAt(ftPYStr().indexOf(cc.charAt(i)));
else if(simpPYStr().indexOf(cc.charAt(i))!=-1)
str+=qqPYStr().charAt(simpPYStr().indexOf(cc.charAt(i)));
else
str+=cc.charAt(i);
}
return str;
}
function convert(nOption){
if(nOption==0)//转换成简体
txt.value=simplized(txt.value);
if(nOption==1)js arguments
txt.value=traditionalized(txt.value);//转换成繁体
if(nOption==2)
txt.value=qqlized(txt.value);//转换成qq个性繁体
}
</script>
<table bordercolor="#6699cc" cellspacing="0" cellpadding="2" width="700" align="center" border="1">
<tbody>
<tr>
<td valign="top" width="99%" bgcolor="#6699cc">
<p align="center"><font color="#ffffff"><strong>汉字简体繁体转换</strong></font></p></td></tr>
<tr>
<td valign="top" width="99%" height="15">
<div align="center">
<center><br>
<input onclick="paste('txt')" type="button" value="粘贴">
<input onclick="convert(0)" type="button" value="转化为简体">
<input onclick="convert(1)" type="button" value="转化为繁体">
<input onclick="convert(2)" type="button" value="转化为QQ繁体">
<input onclick="copy('txt')" type="button" value="复制">
<input onclick="cut('txt')" type="button" value="剪切">
<input onclick="txt.value='';txt.focus();" type="button" value="清空">
<br><br>
<textarea id="txt" rows="15" cols="80" value=""></textarea>
<br><br></center>
</div>
</td>
</tr>
</tbody>
</table>
三、js搞定⽹页的简繁转换
对⽹页进⾏简繁字体转换的⽅法⼀般有两种:⼀是使⽤《简繁通》这样的专业软件,另外⼀种是制作两套版本的⽹页。显然,这两种⽅法都较为⿇烦,⽽且专业软件⼀般不能⽤于免费的空间。笔者在这⾥给⼤家提供⼀个⾮常简单的⽅法,只须在页⾯上添加⼏⾏代码就可以轻松搞定⽹页的简繁转换了。
⾸先下载⽤于简繁转换的js⽂件transform.js:
//*===========================================================================
//* (c)copyright 2000 liqwei
//* Email: liqwei(at)liqwei
//* Site: www.liqwei/
//*===========================================================================
//* 功能:负责简繁体转换,需要放在页⾯底部;
//* 版本:v1.0;
//*===========================================================================
//功能:转换对象,使⽤递归,逐层剥到⽂本;
function transformContent(switcherId, fobj){
if(typeof(fobj)=="object"){
var obj=fobj.childNodes
} else {
if(parseInt(fobj)!=0){ //在页⾯初始化时控制不更新当前页⾯语⾔状态;
var switcherObj = ElementById(switcherId);
with(switcherObj){
if(parseInt(isCurrentFt)){
innerHTML = place('简','繁')
title = place('简','繁')
}else{
innerHTML = place('繁','简')
title = place('繁','简')
}
}
switcherObj.innerHTML=transformText(switcherObj.innerHTML, isCurrentFt)
switcherObj.title=transformText(switcherObj.title, isCurrentFt)
if(isCurrentFt=="1"){isCurrentFt="0"}else{isCurrentFt="1"}
writeCookie("isCurrentFt",isCurrentFt)
}
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.id==switcherId)continue;
if(OO.title!=""&&OO.title!=null)OO.title=transformText(OO.title, isCurrentFt);
if(OO.alt!=""&&OO.alt!=null)OO.alt=transformText(OO.alt, isCurrentFt);
if(OO.tagName=="INPUT"&&OO.value!=""&&pe!="text"&&pe!="hidden")OO.value=transformText(OO.value, isCurrentFt);
deType==3){OO.data=transformText(OO.data, isCurrentFt)}
else transformContent(switcherId, OO)
}
}
//功能:转换指定字符串;
function transformText(txt, isFt){
if(txt==null || txt=="")return ""
if(parseInt(isFt)){return s2t(txt)}else{return t2s(txt)}
}
//功能:简体字符转为繁体字符;
function s2t(cc){
var str='',ss=jtpy(),tt=ftpy();
for(var i=0;i<cc.length;i++){
var c = cc.charAt(i);
if(c.charCodeAt(0)>10000&&ss.indexOf(c)!=-1)str+=tt.charAt(ss.indexOf(c));
else str+=c;
}
return str;
}
//功能:繁体字符转为简体字符;
function t2s(cc){
var str='',ss=jtpy(),tt=ftpy();
for(var i=0;i<cc.length;i++){
var c = cc.charAt(i);
if(c.charCodeAt(0)>10000&&tt.indexOf(c)!=-1)str+=ss.charAt(tt.indexOf(c));
else str+=c;
}
return str;
}
function jtpy(){
return '皑蔼碍爱翱袄奥坝罢摆败颁办绊帮绑镑谤剥饱宝报鲍辈贝钡狈备惫绷笔毕毙闭边编贬变辩辫鳖瘪濒滨宾摈饼拨钵铂驳⼘补参蚕残惭惨灿苍舱仓沧厕侧册测层诧搀掺蝉馋谗缠铲产阐颤场尝长偿肠⼚畅钞车彻尘陈衬撑称惩诚骋痴迟驰耻齿炽冲}
function ftpy(){
return '皚藹礙愛翺襖奧壩罷擺敗頒辦絆幫綁鎊謗剝飽寶報鮑輩⾙鋇狽備憊繃筆畢斃閉邊編貶變辯辮鼈癟瀕濱賓擯餅撥缽鉑駁蔔補參蠶殘慚慘燦蒼艙倉滄廁側冊測層詫攙摻蟬饞讒纏鏟産闡顫場嘗⾧償腸廠暢鈔⾞徹塵陳襯撐稱懲誠騁癡遲馳恥⿒熾沖}
//功能:获取指定名称的 Cookie 值;
function readCookie(name) {
var value = "";
kie.length > 0){
var prefix = name + "=";
var begin = kie.indexOf(prefix);
if (begin != -1) {
begin += prefix.length;
var end = kie.indexOf(";", begin);
if (end == -1) end = kie.length;
value = kie.substring(begin, end));
}
}
return value;
}
//功能:设置指定名称的 Cookie 值;
function writeCookie(name, value, days){
var argv = writeCookie.arguments;
var argc = writeCookie.arguments.length;
var days = (argc>2)?argv[2]:null;
if(days!=null){
var expireDate = new Date();
expireDate.Time() + (days*1000*3600*24));
}
}
var isCurrentFt;
//功能:页⾯初始化函数
// switcherId ⽂字链接,点击负责简繁切换,建议:<a id="switcher_link" href="#">繁体中⽂</a>;
// isDefaultFt 当前⽂档默认是否为繁体中⽂;
// delay 页⾯加载后的转换延迟时间,单位毫秒;
// 使⽤的 Cookie 变量名称:isCurrentFt
function initPageLanguage(switcherId, isDefaultFt, delay){
isDefaultFt = isDefaultFt?"1":"0";
var ElementById(switcherId)
isCurrentFt=readCookie("isCurrentFt")
if(isCurrentFt==null || isCurrentFt=="") isCurrentFt=isDefaultFt
with(switcherObj){
if(typeof(document.all)!="object") {//⾮IE浏览器
href="javascript:transformContent('"+ switcherId +"');"
}else{
href="#";
onclick= new Function("transformContent('"+ switcherId +"');return false;")
}
if(title == null || title=="") title = "点击以繁体中⽂⽅式浏览";
if(parseInt(isCurrentFt)) {
innerHTML = place('繁','简')
title = place('繁','简')
}
innerHTML = transformText(innerHTML, parseInt(isCurrentFt)?0:1)
title = transformText(title, parseInt(isCurrentFt)?0:1)
}
if(isCurrentFt!=isDefaultFt){setTimeout("transformContent('"+ switcherId +"',0)",delay)}
}
// 初始化调⽤接⼝
/
/initPageLanguage("switcher_link", false, 50);
复制到⽹站⽬录下,然后使⽤⽹页制作⼯具打开需要进⾏简繁转换的⽹页,在代码中的加⼊如下代码:
之前⽤obj.innerHTML=s2t(obj.innerHTML) 出错: Unable to get property 'innerHTML' of undefined or null reference .
后改为:
<script type="text/javascript" src="transform.js"></script>
<script type="text/JavaScript" language="JavaScript">
// var obj = document.body;
function s22t(){
document.body.innerHTML=s2t(document.body.innerHTML);
// document.body.innerHTML
}
function t22s(){
document.body.innerHTML=t2s(document.body.innerHTML);
}
</script>
然后在⽹页的适当位置添加简繁转换链接:<a href="javascript:s22t()">繁体中⽂</a><a href="javascript:t22s()">简体中⽂</a>
保存页⾯后,点击“繁体中⽂”链接,页⾯就会成繁体,点击“简体中⽂”就会⾃动转换为简体形式,⽅便不同⽤户的选择浏览了。
提⽰:这种⽅法不仅适⽤于静态⽹站还可以⽤在论坛、留⾔板等动态⽹站系统中。
⼆优化后利⽤Cookie 整站可转为繁体
1 .将以下代码加⼊到 transform.js 的前⾯: 然后引⼊⽂件
<script type="text/javascript" src="transform.js"></script>
function s22t(){
document.body.innerHTML=s2t(document.body.innerHTML);
}
function t22s(){
document.body.innerHTML=t2s(document.body.innerHTML);
//以下删除cookie
var date=new Date();
date.Time()-1000)
四、⾃⼰测试成功实例
jian2fan.js
1 function simpPYStr(){
2 return '啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆⼋疤巴拔跋靶把耙坝霸罢爸⽩柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥薄雹保堡饱宝抱报暴
3 }
4 function ftPYStr(){
5 return '啊阿埃挨哎唉哀皚癌藹矮艾礙愛隘鞍氨安俺按暗岸胺案骯昂盎凹敖熬翺襖傲奧懊澳芭捌扒叭吧笆⼋疤巴拔跋靶把耙壩霸罷爸⽩柏百擺佰敗拜稗斑班搬扳般頒板版扮拌伴瓣半辦絆邦幫梆榜膀綁棒磅蚌鎊傍謗苞胞包褒剝薄雹保堡飽寶抱報暴
6 }
7 function qqPYStr()
8 {
9 return '娿婀埃挨餀呃哀皑癌蔼婑銰碍嬡隘鞍氨鮟唵洝暗岸胺案肮昻盎凹獓熬翱仸謸奧襖奧妑捌朳朳妑笆仈疤妑菝柭靶妑耙坝覇罢妑皛柏咟擺佰敗湃稗癍癍搬扳瘢頒闆蝂汾絆柈瓣柈刅绊綁幇梆徬嫎垹蜯嫎蚌镑徬谤苞菢笣褒剝薄雹湺堡怉寶砲蕔懪
10 }
11
12 //转换成繁体
13 function fry_traditionalized(cc){
14 var str='';
15 for(var i=0;i<cc.length;i++){
16 if(simpPYStr().indexOf(cc.charAt(i))!=-1)
17str+=ftPYStr().charAt(simpPYStr().indexOf(cc.charAt(i)));
18else if(qqPYStr().indexOf(cc.charAt(i))!=-1)
19str+=ftPYStr().charAt(qqPYStr().indexOf(cc.charAt(i)));
20else
21 str+=cc.charAt(i);
22}
23 return str;
24}
25//转换成简体
26function fry_simplized(cc){
27 var str='';
28for(var i=0;i<cc.length;i++){
29if(ftPYStr().indexOf(cc.charAt(i))!=-1)
30str+=simpPYStr().charAt(ftPYStr().indexOf(cc.charAt(i)));
31else if(qqPYStr().indexOf(cc.charAt(i))!=-1)
32str+=simpPYStr().charAt(qqPYStr().indexOf(cc.charAt(i)));
33else
34 str+=cc.charAt(i);
35}
36 return str;
37}
测试关键代码:
<script src="__STUDENT__/js/jian2fan.js"></script>
<script>
console.log(fry_traditionalized('汉字简体繁体转换'));
</script>
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论