js实现简体繁体转换插件(全业态)并真实应用于项目
2019独角兽企业重金招聘Python工程师标准>>>
/****@TITLE <javasrctipt中文简体转换为繁体AND中文转换英文插件>*@TIME 2014/4/27 22:10*@AUTHOR 任孟洋(RMY) RenMengYangIT@163.com*@封装模式为自调用匿名函数(function(){})(); 这样的好处是开发不污染顶层变量,防止在项目中多人开发时函数重命名*解释: var i = function(){ alert(xx);} ; i() ;与 (function(){ alert(xxx);})();是相同的 * 转换英文:我准备用goole的APi做*Cookie的增查*中文字符库(从百度而来字体由于,我用的常用的字库,那么翻译率为80%以上);*使用实例:* <html>*<script type="text/javascript">* window.onload = function () {* $.init('xxx');* }*</script>* <a id="xxx" >繁體中文</a>* <html>*配置项:Simplified_lib 中文简体包*配置项:Traditional_lib繁体简体包*顺便说一下,代码在oschina的发布,代码有点乱,本来很工整的嘛**/
(function(){
// 默认配置文件var Config = { ExpiresDay : 1 , //Cookie的默认过期的时间DefaultCoding : 0, //默认是否繁体,0:简体,1:繁体,2: 中文转英文(这里不能修改)TranslateDelay : 40, //翻译延时毫秒(定时器多少时间内进行翻译)SelectDemo : '||BR|HR|TEXTAREA|INPUT|' , Simplified_lib : ' ' //简体语言包Traditional_lib:' ' //繁体语言包};
// 封装一个常用的dom操作--dom操作- var RMY = function(id) {return document.getElementById(id);};
RMY.AllBodyNodes = function () { return document.body.childNodes;}
//封装一个检查当前是繁体||简体的操作RMY.init = function(id){Dom_Obj = RMY(id) ;if ( Dom_Obj ) {//self.location.hostname self表示wiondws .location表示url . hostname:主机名字 并域名中的.替换成空Host_Cn = "RMY"+self.location.hostname.toString().replace(/\./g,""); HostBodyCoding = RMY.GetCookie(Host_Cn); //定义全局变量if ( HostBodyCoding != "1") HostBodyCoding= Config.DefaultCoding;/* 可扩展处switch (HostBodyCoding) {case '0' : case '1' :case '2':}*/with(Dom_Obj){ //取得A标签元素
if (window.ActiveXObject){ //IE浏览器href="#"; //向A中添加属性nclick= new Function("$.ConvertBody();return false"); //添加一个事件}else{//w3c标准href="javascript:$.ConvertBody()"; //添加属性} title = RMY.CheckFont("繁体中文浏览",1,1); //添加属性innerHTML = RMY.CheckFont(innerHTML,1,1); //填充内容
}HostBodyCoding == "1" ? setTimeout("$.ConvertBody()",Config.TranslateDelay) : '';//在隔多少时间进行自动翻译};
};
//执行翻译递归解析出元素值与文本,再进行转换
RMY.ConvertBody = function (Dom_Html) {
if (typeof(Dom_Html) === "object" ) { var Dom_BodyNodes = Dom_Html.childNodes ; //获得页面中所有的HTMldome元素 这一步是为了递归考虑
} else {//如果未定义对象var txt = Dom_Obj.innerHTML.toString(); if (txt.indexOf("简")<0) {HostBodyCoding = 1 ; //变成繁体Dom_Obj.innerHTML=RMY.CheckFont(txt,0,1); //原理的繁体变简体Dom_Obj.title =RMY.CheckFont(Dom_Obj.title ,0,1); //原理的简体变繁体} else {HostBodyCoding = 0 ; //变简体 Dom_Obj.innerHTML=RMY.CheckFont(txt,1,1); Dom_Obj.title =RMY.CheckFont(Dom_Obj.title ,1,1); }
RMY.SetCookie(Host_Cn,HostBodyCoding);//获取网页的所有的Dome元素
var Dom_BodyNodes = RMY.AllBodyNodes();//如果定义了对象}//取出dom元素下的系类文本 ...for(var i=0;i<Dom_BodyNodes.length;i++){ var Chlid=Dom_BodyNodes.item(i);if(Config.SelectDemo.indexOf("|"+Chlid.tagName+"|") > 0 || Chlid == Dom_Obj) continue;if(Chlid.title!=""&&Chlid.title!=null)Chlid.title=RMY.CheckFont(Chlid.title.replace(/^\s+|\s+$/g,"")); //取出Titleif(Chlid.alt!=""&&Chlid.alt!=null)Chlid.alt=RMY.CheckFont(Chlid.alt.replace(/^\s+|\s+$/g,"")); //去alertif(Chlid.tagName=="INPUT"&&Chlid.value!=""&&Chlid.type!="text"&&Chlid.type!="hidden") Chlid.value=RMY.CheckFont(Chlid.value.replace(/^\s+|\s+$/g,"")) ;if(Chlid.nodeType==3){Chlid.data=RMY.CheckFont(Chlid.data.replace(/^\s+|\s+$/g,"")); }else{ RMY.ConvertBody(Chlid); //递归};}
}
//检查当前字体RMY.CheckFont = function(txt,toFT,chgTxt){if(txt==""||txt==null)return ""toFT=toFT==null?HostBodyCoding:toFT;
if (chgTxt) txt = txt.replace((toFT?"简":"繁"),(toFT?"繁":"简"));if (toFT) {
return RMY.FontChanger(txt,1); } else {
return RMY.FontChanger(txt,0)}};//字体转换//Tap 0 简体 1:繁体 2:英文RMY.FontChanger= function(txt,Tap=1){var Str='',Str_Simplified =Config.Simplified_lib,Str_Traditional=Config.Traditional_lib;var StrLen =txt.length; //长度switch (Tap) {case 0 : //繁体转简体for (var i =0; i<StrLen; i++) {var StrIndex = Str_Traditional.indexOf(txt.charAt(i)); //在简体字库中搜索文本下标if(txt.charCodeAt(i)>10000&&StrIndex !=-1) { //排除没搜索到的并且Undecde编号要大于10000Str +=Str_Simplified.charAt(StrIndex); //到繁体字库中去查找索引下标为Strndex 文 字 } else {Str +=txt.charAt(i); //文字中有简体}}break;case 1 : //简体转繁体for (var i =0; i<StrLen; i++) {var StrIndex = Str_Simplified.indexOf(txt.charAt(i)); //在简体字库中搜索文本下标if(txt.charCodeAt(i)>10000&&StrIndex !=-1) { //排除没搜索到的并且Undecde编号要大于10000 Str+=Str_Traditional.charAt(StrIndex); //到繁体字库中去查找索引下标为Strndex 文字 } else { Str+=txt.charAt(i); //文字中有简体}}break;case 2 : break;}
Str_Simplified = null ; Str_Traditional = null; StrIndex= null; //变量销毁
return Str ;}
//封装一个设置Cookie//arguments获取当前函数的参数的列表, //如果当前参数大于了2个说明设置了多个参数那么第三个参数就是设置的过期时间//直接把第三个参数的值赋值ExpiresTime,如果没设置那么直接为空,//如果写的比较严谨的话这里还要对第三个参数的进行验证,必须数字类型,目前就先不写了,其实也不太影响RMY.SetCookie = function(Name,Value) {var ExpiresDay = (arguments.length> 2) ? arguments[2] : Config.ExpiresDay; var LargeExpDate = new Date ();LargeExpDate.setTime(LargeExpDate.getTime() + (ExpiresDay*1000*3600*24));document.cookie = Name + "="+ escape (Value) + ";expires=" + LargeExpDate.toGMTString(); //写入Cookie}
//封装一个获取CookieRMY.GetCookie = function(Name) {var Search = Name + "=";if(document.cookie.length > 0) {Offset = document.cookie.indexOf(Search) ; //查找字符的开始位置 if (Offset != -1) //没有当前的Cookie{Offset += Search.length;End = document.cookie.indexOf(";", Offset);if (End == -1) End = document.cookie.length;return unescape(document.cookie.substring(Offset, End));}else{return '';}
}}
window.$ = RMY;
})();
转载于:https://my.oschina.net/u/1246814/blog/263068
js实现简体繁体转换插件(全业态)并真实应用于项目相关推荐
- [JS脚本][实用小软件]一个简单的汉字简体繁体转换工具源代码
演示请到: 汉字简体繁体转换工具 ------------------------------------------ 代码如下: -------------------------- 汉字简体繁体转 ...
- js简体繁体转换代码
js简体繁体转换代码 javascript简体繁体转换代码 转载地址:http://www.cnblogs.com/genson/archive/2008/04/16/1004632.html js简 ...
- 利用客户端js实现汉字简体繁体转换
<HEAD> <TITLE> New Document </TITLE> </HEAD> <BODY> <html> <h ...
- 汉字简体繁体转换----Javascript
最近看到有个简体--繁体字互相转换的程序,是用JS实现的,感觉很好玩,所以拿来研究研究.先看看界面如下: 汉字简体繁体转换 上面的所有代码如下: <script> function cop ...
- JavaScript看图器 汉字简体繁体转换 中国日历类 自动更换桌面墙纸
抢24的扑克游戏 自动更换桌面墙纸 中国日历类 汉字简体繁体转换 JavaScript看图器 无缝MARQUEE 包含图片的option下拉菜单 微软JS脚本的加密与解 ...
- 免费在线汉字简体繁体转换工具
简体字和繁体字相互转换,很实用的! 进入这里一键转换:简体繁体转换
- 简体繁体转换功能php,php如何实现简体繁体转换-PHP问题
思绪: 依据中文简体.繁体对应的数据表,将其整顿成一个以简体字为键,繁体字为值的一个一维数组,相似上面这样的一个数组构造: $data=array('侧'=>'側','厂'=>'廠'); ...
- java 简体繁体转换
简体繁体转换网上有开源jar包:ZHConverter 此处做个mark //繁体转简体ZHConverter zhConverter1 = ZHConverter.getInstance(ZHCon ...
- IDEA 简体繁体切换插件
Chinese Converter idea简体繁体切换插件:选取后 Alt+Ctrl+1,Alt+Ctrl+2 快捷切换 今天发现一个好用的idea插件,简体繁体切换,对于我们工作需要用到简繁体有很 ...
最新文章
- Hadoop学习--Hive安装与配置
- C/C++编程能力提升捷径 - ACM
- SAP SD模块几个透明表
- 自然语言处理python进阶(一)
- 安装Nginx必要组件时解决 yum -y install pcre pcre-devel安装出错
- java一致性hash api_一致性哈希算法学习及JAVA代码实现分析
- 自适应 幻灯片代码 app_低成本0基础开发app之开发首页幻灯片接口
- HTML:表格、表单和rem
- 【得之我幸,失之我命】分享下研究生阶段, IEEE论文投稿的心态和心路历程
- 与64位版本的Windows不兼容,masm运行不了
- 计算机代表的数字,计算机中数的表示
- Go语言黑帽子学习1
- [转]对Android开发者有益的40条优化建议
- 阿愚呱呱作为一个非技术人员,是如何做到不到3年时间成为RPA行业的一个头部IP的?
- 最佳联盟营销软件解决方案:简化你的联盟管理
- 【中文分词】 FMM BMM (python)
- 北京航班延误_预测航班延误
- 用python计算整数各位数字之和
- C语言 | 复制字符串 不用strcpy
- EXCEL VBA常用语句