| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989 | 
							- /*
 
- 编辑使用区域
 
- */
 
- Namespace.register("U.D.E");
 
- //#region 编辑区域
 
- /**
 
- * 编辑器区域初始化设置全局变量
 
- *
 
- * @param   {window} window
 
- * @param   {element} 当前编辑框元素
 
- * @param   {object} 编辑传参对象
 
- -----------[CB] 回调函数
 
- -----------[TF] 识别id
 
- */
 
- U.D.E.setVariable = function (id, cursor) {
 
-     var _cursors = U.D.E.SORange;
 
-     if (id) {
 
-         //设置监视前进后退变化使用 函数有问题以后要修改
 
-         _cursors["OAT"][id] = [{ "OR": new cursor.init(cursor, false), "C": ""}]; //创建前进后退处理
 
-         _cursors["OAT"][id].l = 0; //当前前进后退所在的位置
 
-         _cursors["OE"][id] = cursor; //保存当前光标变量
 
-     }
 
- }
 
- /**
 
- * 初始化编辑区域 判断光标是否存在、创建光标、写入全局光标变量、监听键盘
 
- *
 
- * @param   {window} window
 
- * @param   {element} 当前编辑框元素
 
- * @param   {object} 编辑传参对象
 
- -----------[CB] 回调函数
 
- -----------[TF] 识别id
 
- */
 
- U.D.E.GetSelectionRange = function (win, el, obj) {
 
-     try {
 
-         var _id = obj["TF"], //对该光标的唯一标识
 
-         _cursors = U.D.E.SORange, //所有使用编辑光标
 
-         _cursor = _cursors["OE"][_id]; //获取已经创建的光标功能区
 
-         //已经创建直接刷新光标
 
-         if (_id && _cursor) {
 
-             //_cursor = _cursor.setVariable(win, win.document, el, obj); //光标存在,把光标的变量重新赋值
 
-             _cursor.CreateR(); //重新创建光标
 
-         }
 
-         else { //创建一个新的光标控制
 
-             _cursor = new U.D.E.SelectionRange(win, win.document, el, obj).CreateR(true); //创建光标
 
-             //设置光标的全局变量
 
-             U.D.E.setVariable(_id, _cursor); //全局变量初始化
 
-             //把键盘事件和光标一起绑定,因为要使用光标的地方全部都要监控键盘输入输出,所以绑定在一起,如果有机会,可以独立。
 
-             //事件监视使用 处理页面在选择 输入 点击的时候的处理
 
-             U.D.E.KeyboardBinding(_cursor.PSO, _cursor); //键盘绑定处理
 
-         }
 
-         return _cursor;
 
-     }
 
-     catch (e) { return false; }
 
- }
 
- /**
 
- * 键盘绑定处理
 
- *
 
- * @param   {element} window
 
- * @param   {U.D.E.SelectionRange} 光标对象
 
- */
 
- U.D.E.KeyboardBinding = function (el, cursor) {
 
-     $(el).bind({
 
-         "keydown": U.M.apply(cursor, cursor.GetKE), //键盘点击
 
-         "keyup": U.M.apply(cursor, cursor.CLKU), //键盘结束处理
 
-         "copy": U.M.apply(cursor, cursor.Copy), //键盘结束处理
 
-         "paste": U.M.apply(cursor, cursor.Paste), //键盘结束处理
 
-         "cut": U.M.apply(cursor, cursor.Cut), //键盘结束处理
 
-         //selectstart: U.M.apply(_URE, _URE.selectAll), //页面选择处理函数
 
-         "click": U.M.apply(cursor, cursor.CLMU) //点击处理
 
-     });
 
- }
 
- /**
 
- * 初始化编辑区域 光标的前进后退有问题 需要用其他的解决方案
 
- *
 
- * @param   {window} 触发的域
 
- * @param   {document} 触发的域下的document
 
- * @param   {element} 当前编辑元素
 
- * @param   {object} 传参
 
- -----------[CB] 回调函数
 
- -----------[TF] 识别id
 
- * @param   {element} 上级不变的元素
 
- */
 
- U.D.E.SelectionRange = function (UW, UD, UDOD, UDE) {
 
-     this.setVariable(UW, UD, UDOD, UDE);
 
- }
 
- ///**
 
- //* 获取可编辑的元素
 
- //*
 
- //* @param   {window} 触发的域
 
- //*/
 
- //U.D.E.SelectionRange.GetEditElement = function () {
 
- //    //获取可编辑对象
 
- //    while (_UCE && ((_UTF = _UCE.tagName.toLocaleLowerCase()) == "p" || _UCE.contentEditable != "true") && _UTF != "body") {
 
- //        _UCE = _UCE.parentNode;
 
- //    }
 
- //    this.PSO = _UCE; //设置可编辑区域值
 
- //}
 
- //使用方法集
 
- U.D.E.SORange = U.D.E.SelectionRange.prototype = {
 
-     OAT: {}, //前进后退使用集
 
-     OE: {}, //记录创建光标值
 
-     setVariable: function (UW, UD, UDOD, UDE) {
 
-         this.CW = UW; //编辑的windows层次
 
-         this.CD = UD; //编辑的document
 
-         this.SO = UDOD || this.Parent(); //编辑区域
 
-         this.PSO = $(UDOD).Parent({ "contentEditable": "true" }); //编辑区域的父亲
 
-         this.CB = UDE["CB"]; //编辑的回调函数
 
-         this.TF = UDE["TF"]; //创建光标的唯一识别码
 
-         this.TIM = [];
 
-         this.S = null;
 
-         this.R = null;
 
-         this.J = null;
 
-         this.TR = null;
 
-         this.BCB = null;
 
-         this.FCB = null;
 
-         this.Dectect = U.D.E.codeDetect();
 
-         this.CTH = "";
 
-     },
 
-     /**
 
-     * 创建一个光标记载查看
 
-     *
 
-     * @param   {boolean} 创建对象时候时候聚焦对象
 
-     */
 
-     CreateR: function (UTF) {
 
-         //  U.Ut.AddObj(this, { SO: this.SO || this.Parent(), PSO: this.SO }); //设置当前元素和上级元素
 
-         //变量定义
 
-         var _b,
 
-         _win = this.CW, //当前域
 
-         _doc = this.CD; //域下的document对象
 
-         //设置加载对象
 
-         try {
 
-             if (_win.getSelection) { //html5 
 
-                 U.Ut.AddObj(this, { S: _win.getSelection(), TR: _doc.createRange() }); //添加可编辑对象
 
-                 if (UTF !== false && this.SO) { //聚焦到制定的位置
 
-                     if (this.SO.focus && (!this.S.rangeCount || !U.M.EISE(this.PSO, this.Parent(this.S.getRangeAt(0))))) {  //判断对象是否在元素内
 
-                         this.SO.focus(); //当前对象聚焦
 
-                         this.QX(this.getLen(this.SO), this.getLen(this.SO), this.SO); //设置对象在当前位置
 
-                         this.S = _win.getSelection(); //设置选择区对象
 
-                     }
 
-                 }
 
-                 this.R = this.S.rangeCount ? this.S.getRangeAt(0) : this.R || _doc.createRange(); //选取对象
 
-             }
 
-             else { //老ie
 
-                 U.Ut.AddObj(this, { //光标选区的创建
 
-                     S: _doc.selection, //选取对象
 
-                     R: _doc.selection.createRange(), //光标对象
 
-                     TR: document.body.createTextRange() //输入光标对象
 
-                 });
 
-                 if ((_UTF = (UTF !== false && this.SO && !U.M.EISE(this.PSO, this.Parent(this.R)))) || UTF) { //需要插入光标
 
-                     if (_UTF) { //是否聚焦到指定位置中
 
-                         this.R = this.QX(this.getLen(this.SO), this.getLen(this.SO), this.SO) || this.R; //设置选取位置
 
-                     }
 
-                     else { //当前元素聚焦
 
-                         this.SO.focus();
 
-                         this.Replace(""); //写入光标
 
-                     }
 
-                     this.S = _doc.selection; //插入光标
 
-                 }
 
-             }
 
-         } catch (e) { }
 
-         return this;
 
-     },
 
-     /**
 
-     * 初始化编辑区域
 
-     *
 
-     * @param   {object} 编辑对象
 
-     -----------[CW] 当前域
 
-     -----------[CD] 当前域下的doc
 
-     -----------[SO] 对象
 
-     -----------[{}] 
 
-     -------[TF] 识别id
 
-     -------[CB] 回调函数
 
-     -----------[PSO] 编辑的上级元素
 
-     * @param   {boolean} 变化的数组 实现数组 0 、 1 切换
 
-     */
 
-     init: function (URE, UTF) { //创建光标监视区域
 
-         this.setVariable(URE["CW"], URE["CD"], URE["SO"], { "TF": URE["TF"], "CB": URE["CB"] }, URE["PSO"])
 
-         this.CreateR(UTF);
 
-     },
 
-     //#region 获取指定编辑元素
 
-     /**
 
-     * 初始化编辑区域
 
-     *
 
-     * @param   {object} 光标对象 
 
-     * @param   {document} 是否连text也获取
 
-     */
 
-     Parent: function (UDR, UTF, NT) { //获取当前光标所在的区域
 
-         if (UDR = UDR || this.R) { //光标存在使用 
 
-             if (UDR.parentElement || UDR.commonParentElement) { //老IE获取
 
-                 return (UDR.parentElement || UDR.commonParentElement)(); //上级元素 选择元素区域
 
-             }
 
-             else { //统一使用
 
-                 var _UDOD = UDR.commonAncestorContainer;
 
-                 if (NT) {
 
-                     return UDR.endContainer.parentElement;
 
-                 }
 
-                 return ((_UDOD.nodeName == "#text" && UTF) ? _UDOD.parentNode : _UDOD);
 
-             }
 
-         }
 
-     },
 
-     /**
 
-     * 获取当前选中的元素
 
-     */
 
-     Element: function (UDR) {
 
-         if (UDR = UDR || this.R) { //光标存在使用
 
-             if (UDR.parentElement || UDR.commonParentElement) { //老IE获取
 
-                 return (UDR.parentElement || UDR.commonParentElement)();
 
-             }
 
-             else { //统一使用
 
-                 return UDR.commonAncestorContainer;
 
-             }
 
-         }
 
-     },
 
-     /**
 
-     * 获取父亲层
 
-     *
 
-     * @param   {object} 光标对象 
 
-     * @param   {document} 是否连text也获取
 
-     */
 
-     IParent: function (UTH, UDR) {
 
-         UTH = U.Ut.isUndefined(UTH) ? this.GetSelectedHtml() : UTH; //选中的蚊子
 
-         var _UDPD,
 
-             _UDOD = this.Parent(UDR),
 
-             _UDTD = $$("div", { "innerHTML": UTH });
 
-         while (_UDOD && _UDOD.innerText && (_UDTD.innerText == _UDOD.innerText) && (_UDOD != this.PSO) && (_UDPD = _UDOD)) {
 
-             _UDOD = _UDOD.parentNode;
 
-         }
 
-         return _UDPD;
 
-     },
 
-     //#endregion
 
-     /**
 
-     * 文字替换 同时也是插入文字的方法 这里用在 设置文字大小 字号等..
 
-     *
 
-     * @param   {string} 需要插入或者替换的文字 
 
-     * @param   {object} range光标对象
 
-     * @param   {boolean} 是否聚焦到最后
 
-     * @return   {object} 光标编辑对象
 
-     */
 
-     Replace: function (UTS, URD, UTF) { //光标选区文字替换
 
-         var i, _userid, _UDOD, _UDCD, _UDTD, _UDSD, _UDE, _UTF, _UST = "",
 
-             _UTH = UTS == null ? UTS : (UTS.outerHTML || UTS); //需要插入或者替换的文字
 
-         URD = URD || this.R; //光标对象
 
-         if (URD && UTS != null) { //判断是否具有光标和替换的文字7
 
-             _UDE = [];
 
-             _UDOD = this.Parent(URD); //获取上级元素
 
-             _userid = "R" + Guid.newGuid();
 
-             _UDTD = $$("span", { "id": _userid, "innerHTML": _UTH }); //生成需要写入的数据元素
 
-             _UTF = this.GetSelectedText(); //当前需要替换的文字
 
-             if (_UDOD != document) { //判断处理的编辑区域是否在原来的编辑框里  U.M.EISE(this.PSO, _UDOD) &&
 
-                 if (window.getSelection) { //html5
 
-                     _UDTD = URD.createContextualFragment(_UTH); //创建选取
 
-                     (_UDOD.innerText == this.GetSelectedText() && _UDOD.innerText) && (URD.selectNodeContents(_UDOD)); //文字聚焦到当前选取中
 
-                     URD.deleteContents(); //移除文字
 
-                     this.S.removeAllRanges(); //移除选取
 
-                     //                    if (_UDTD.children[0]) {
 
-                     //                        URD.selectNodeContents(_UDTD.children[0])
 
-                     //                    }
 
-                     URD.insertNode(_UDTD); //插入选择的蚊子
 
-                     //                    if ($("#" + _userid).Child()[0]) {
 
-                     //                        URD.selectNodeContents($("#" + _userid).Child()[0]);
 
-                     //                        $("#" + _userid)[0].outerHTML = $("#" + _userid)[0].innerHTML;
 
-                     //                    }
 
-                     if (UTF) {
 
-                         URD.collapse(false);
 
-                     }
 
-                     this.S.addRange(URD); //把替换的文章添加到当前指定的选取中
 
-                 }
 
-                 else { //老IE兼容
 
-                     if (!_UDTD.innerText && !$("div", _UDTD).length && !$("div", this.PSO).length) { //无输入的内容 直接新建换行内容符号 div
 
-                         this.SL($$("div", {}, this.PSO)); //添加输入的div
 
-                         _UST = _UDTD.innerHTML; //设置使用的值
 
-                     }
 
-                     else { //获取需要插入的内容
 
-                         _UST = (_UDTD.innerHTML && !UTF) ? _UDTD.outerHTML : _UDTD.innerHTML;
 
-                     }
 
-                     URD.select(); //选取聚焦
 
-                     URD.pasteHTML(""); //添加选取文字
 
-                     URD.pasteHTML(_UST); //添加选取文字
 
-                     if (UTF || !_UDTD.innerHTML) { URD.collapse(false); } //聚焦到最后
 
-                     else { //选取聚焦
 
-                         _UDTD = $("span", this.Parent())[_UDTD.id]; //选择元素
 
-                         _UDTD.outerHTML = _UDTD.innerHTML; //替换焦点
 
-                         this.R.select(); //元素聚焦
 
-                     }
 
-                 }
 
-                 this.CreateR(); //选择成功后 重新生成选取 光标
 
-                 //U.Ut.AddObj(this, { "SO": this.Parent(), "TR": URD }); //设置对象和光标
 
-             }
 
-         }
 
-         return this;
 
-     },
 
-     //#region 元素选择选区处理
 
-     /**
 
-     *  指定的位置创建光标选区
 
-     *
 
-     * @param   {number} 文字插入到指定位置 
 
-     * @param   {number} range光标对象
 
-     * @param   {element} 是否聚焦到最后
 
-     * @return   {object} 光标编辑对象
 
-     */
 
-     QX: function (US, UE, UDOD) { //
 
-         try {
 
-             var _UOE, _UTE,
 
-                 _UD = this.CD; //使用域下的document
 
-             UDOD = UDOD || this.Parent(); //获取元素的上一级 
 
-             if (window.getSelection) { //Html5
 
-                 this.S = (this.S || this.CW.getSelection());
 
-                 (!this.S.rangeCount) && (this.CW.focus(), UDOD.focus(),
 
-                      this.R = this.S.getRangeAt(0));  //获取选区
 
-                 if (this.R.commonAncestorContainer != document) { //指定的位置可编辑可聚焦
 
-                     _UOE = document.createRange();
 
-                     _UOE.selectNode((UDOD)); //聚焦制定的位置
 
-                     US = US == null ? _UOE.startOffset : US == -1 ? _UOE.endOffset : US;
 
-                     UE = UE == null ? _UOE.endOffset : UE == -1 ? _UOE.endOffset : UE; //获取位置
 
-                     try {
 
-                         _UOE.setStart((UDOD || this.R.startContainer), US);
 
-                         _UOE.setEnd((UDOD || this.R.endContainer), UE);
 
-                     }
 
-                     catch (e) {
 
-                         _UOE.setStart(this.R.startContainer, US);
 
-                         _UOE.setEnd(this.R.endContainer, UE);
 
-                     }
 
-                     this.S.removeAllRanges();
 
-                     this.S.addRange(_UOE); //设置位置
 
-                 }
 
-             }
 
-             else { //老IE使用 
 
-                 if (U.Ut.isNumber(US)) {
 
-                     _UOE = _UD.body.createTextRange();
 
-                     _UTE = _UD.body.createTextRange();
 
-                     _UOE.moveToElementText(UDOD);
 
-                     (U.Ut.isNumber(US)) && (_UOE.moveStart("character", US), _UTE.moveToElementText(UDOD), _UTE.moveStart("character", UE), _UOE.setEndPoint("EndToStart", _UTE));
 
-                     (US !== UE) && (_UOE.select());
 
-                 }
 
-                 else { this.R.select(); }
 
-             }
 
-             return _UOE;
 
-         }
 
-         catch (e) { return false; }
 
-     },
 
-     /**
 
-     *  移动光标处理
 
-     *
 
-     * @param   {number} 需要移动的范围 
 
-     * @return   {object} 光标编辑对象
 
-     */
 
-     moveRange: function (US) {
 
-         this.CreateR(false);
 
-         if (window.getSelection) { //Html5
 
-             try {
 
-                 this.TR.setStart(this.R.startContainer, this.R.startOffset + US);
 
-                 this.TR.setEnd(this.R.endContainer, this.R.endOffset);
 
-             }
 
-             catch (e) { }
 
-             this.S.removeAllRanges();
 
-             this.S.addRange(this.TR); //设置位置
 
-         }
 
-         else { //老IE使用 
 
-             this.TR.moveToElementText(this.Parent());
 
-             _UOE.moveStart("character", US);
 
-         }
 
-         this.CreateR();
 
-     },
 
-     /**
 
-     *  选择选中区域元素
 
-     *
 
-     */
 
-     GetSE: function () {
 
-         if (window.getSelection) { //HTML5
 
-             _USE = this.CW.getSelection();
 
-             _URE = _USE.rangeCount ? _USE.getRangeAt(0) : this.R;
 
-             (UDR) && (_URE.setStart(UDR.endContainer, UDR.endOffset));
 
-         }
 
-         else {//老IE兼容
 
-             _USE = document.selection;
 
-             _URE = document.selection.createRange();
 
-             (UDR) && (_URE.setEndPoint("EndToEnd", UDR));
 
-         }
 
-     },
 
-     /**
 
-     *  设定元素为选择元素
 
-     *
 
-     * @param   {element} 文字插入到指定位置 
 
-     * @param   {object} range光标对象
 
-     * @return   {object} 光标编辑对象
 
-     */
 
-     SL: function (UDOD, UDR) {
 
-         UDOD = UDOD || this.SO;
 
-         if (window.getSelection) {  //html5选择  
 
-             (!UDR) && (UDR = document.createRange());
 
-             UDR.selectNodeContents(UDOD);
 
-             this.S = this.S || this.CW.getSelection();
 
-             this.S.removeAllRanges();
 
-             this.S.addRange(UDR);
 
-             this.R = UDR;
 
-         }
 
-         else { //老IE选择元素 
 
-             (!UDR) && (UDR = document.body.createTextRange(), UDR.moveToElementText(UDOD));
 
-             UDR.select();
 
-         }
 
-         // (!UDR) && (UDR = document.body.createTextRange(), UDR.moveToElementText(UDOD)); UDR.collapse(false); UDR.select(); 
 
-         return this;
 
-     },
 
-     //#endregion
 
-     //#region 获取文字
 
-     /**
 
-     *  获取当前选区的html
 
-     *
 
-     * @param   {object} range对象 
 
-     */
 
-     GetSelectedHtml: function (UDR) {
 
-         if ((UDR = UDR || this.R)) {
 
-             var i, _UDAD, _UDCD, _URE, UST = "",
 
-             _UIE = 1;
 
-             if (UDR.cloneContents) { //判断是否
 
-                 var _UDOD = $$("div");
 
-                 _UDOD.appendChild(UDR.cloneContents());
 
-                 UST = _UDOD.innerHTML;
 
-                 _UDCD = $($$("div", { "innerHTML": UST })).Nodes();
 
-                 UST = "";
 
-                 for (i = 0; i < _UDCD.length; i++) {
 
-                     UST += _UDCD[i].outerHTML ? _UDCD[i].outerHTML : "<span>" + _UDCD[i].data + "</span>";
 
-                 }
 
-             }
 
-             else if (UDR.commonParentElement) {
 
-                 UST = UDR.commonParentElement();
 
-                 UST = UST.outerHTML || UST.innerHTML || UST.value || "";
 
-             }
 
-             else {
 
-                 UST = UDR.htmlText;
 
-                 _UDAD = $$("div", { "innerHTML": UDR.htmlText }).childNodes;
 
-                 if (_UDAD.length) {
 
-                     UST = ""; _URE = UDR.duplicate();
 
-                     _URE.moveStart("character", -1);
 
-                     _UDCD = $($$("div", { "innerHTML": _URE.htmlText })).Nodes();
 
-                     if ((_UDCD.length == _UDAD.length && _UDAD[0].outerHTML == _UDCD[0].outerHTML) || (_UDCD.length != _UDAD.length && _URE.htmlText != UDR.htmlText)) {
 
-                         UST = $$("div", { "innerHTML": _UDAD[0].outerHTML || _UDAD[0].nodeValue || _UDAD[0].data || _UDAD[0].text }).innerHTML;
 
-                     }
 
-                     else {
 
-                         UST = ($($$("div", { "innerHTML": _UDAD[0].innerHTML })).Child().length ? _UDAD[0].innerHTML : (_UDAD[0].innerHTML || _UDAD[0].nodeValue || _UDAD[0].data || _UDAD[0].text ? $$("span", { "innerHTML": _UDAD[0].innerHTML || _UDAD[0].nodeValue || _UDAD[0].data || _UDAD[0].text }).outerHTML : ""));
 
-                     }
 
-                     if (_UDAD.length > 1) {
 
-                         for (i = 1; i < _UDAD.length - 1; i++) {
 
-                             UST += _UDAD[i].outerHTML || _UDAD[i].nodeValue || _UDAD[i].data || _UDAD[i].text;
 
-                         }
 
-                         _URE = UDR.duplicate(); _URE.moveEnd("character", 1);
 
-                         _UDCD = $($$("div", { "innerHTML": _URE.htmlText })).Child();
 
-                         if ((_UDCD.length == _UDAD.length && _UDAD[_UDAD.length - 1].outerHTML == _UDCD[_UDCD.length - 1].outerHTML) || (_UDCD.length != _UDAD.length && _URE.htmlText != UDR.htmlText)) {
 
-                             UST += $$("div", { "innerHTML": _UDAD[_UDAD.length - 1].outerHTML || _UDAD[_UDAD.length - 1].nodeValue || _UDAD[_UDAD.length - 1].data || _UDAD[_UDAD.length - 1].text }).innerHTML;
 
-                         }
 
-                         else {
 
-                             UST += ($($$("div", { "innerHTML": _UDAD[_UDAD.length - 1].innerHTML })).Child().length ? _UDAD[_UDAD.length - 1].innerHTML : _UDAD[_UDAD.length - 1].innerHTML || _UDAD[_UDAD.length - 1].nodeValue || _UDAD[_UDAD.length - 1].data || _UDAD[_UDAD.length - 1].text ? $$("span", { "innerHTML": _UDAD[_UDAD.length - 1].innerHTML || _UDAD[_UDAD.length - 1].nodeValue || _UDAD[_UDAD.length - 1].data || _UDAD[_UDAD.length - 1].text }).outerHTML : "");
 
-                         }
 
-                     }
 
-                 }
 
-             }
 
-             return UST;
 
-         }
 
-     },
 
-     /**
 
-     *  设定元素为选择元素
 
-     *
 
-     * @param   {element} 获取当前光标选区的text 
 
-     */
 
-     GetSelectedText: function (UDR) {
 
-         return (UDR = UDR || this.R) == null || UDR.add ? null : UDR.text != undefined ? UDR.text : (this.S.toString()); //全兼容的获取
 
-     },
 
-     //#endregion
 
-     //#region 键盘操作处理
 
-     /**
 
-     *  设定元素为选择元素
 
-     *
 
-     * @param   {string}  
 
-     */
 
-     GetKE: function (UTF) { //输入处理
 
-         var i, _UCE, _UDE, _UKE, _UL, _UDSD,
 
-                     _UTP = this.TF;
 
-         UTF = UTF && U.Ut.isString(UTF) ? UTF : this.Dectect.getValue(); //获取键盘的值 
 
-         switch (UTF) {
 
-             case "redo": //前进
 
-                 //                U.M.StopDefault();
 
-                 //                _UDE = this.OAT[_UTP];
 
-                 //                _UL = _UDE.l;
 
-                 //                _UKE = _UDE[_UL];   //使用值
 
-                 //                for (i = _UL; i < _UDE.length; i++) {
 
-                 //                    if (_UDE[i].C) {
 
-                 //                        _UCE = _UDE[i]; _UDE.l = i; break;
 
-                 //                    }
 
-                 //                } //获取使用列
 
-                 //                if (_UCE) {
 
-                 //                    if (!window.getSelection) { //光标位置使用
 
-                 //                        try {
 
-                 //                            _UKE = _UKE.OR.R;
 
-                 //                            if (_UCE.P.boundingLeft || _UCE.P.boundingTop) {
 
-                 //                                _UCE.OR.R.moveToPoint(_UCE.P.boundingLeft, _UCE.P.boundingTop);
 
-                 //                            };
 
-                 //                        }
 
-                 //                        catch (e) {
 
-                 //                            try {
 
-                 //                                if (_UCE.OR.R.boundingTop < _UCE.P.boundingTop) {
 
-                 //                                    _UCE.OR.R.moveToPoint(_UKE.boundingLeft + _UKE.boundingWidth - 1, _UKE.boundingTop);
 
-                 //                                }
 
-                 //                            } catch (e) { }
 
-                 //                        }
 
-                 //                    }
 
-                 //                    _UCE.OR.Replace(_UCE.C); _UCE.C = "";
 
-                 //                }
 
-                 break;
 
-             case "undo": //后退
 
-                 //                                (this.TIM[1]) && (this.TIM[1]());
 
-                 //                                _UDE = this.OAT[_UTP];
 
-                 //                                _UL = _UDE.l;
 
-                 //                                _UCE = _UDE[_UL];
 
-                 //                                U.M.StopDefault();
 
-                 //                                if (!_UCE.OR.GetSelectedText()) {
 
-                 //                                    if (_UL > 0) {
 
-                 //                                        _UL = (_UDE.l -= 1);
 
-                 //                                        _UCE = _UDE[_UL];
 
-                 //                                    } else { _UCE = null; }
 
-                 //                                }
 
-                 //                                if (_UCE) {
 
-                 //                                    _UCE.C = _UCE.C || _UCE.OR.GetSelectedHtml();
 
-                 //                                    _UCE.OR.Replace("");
 
-                 //                                }
 
-                 break;
 
-             default:
 
-                 //                if (U.Ut.isNumber(UTF[0])) { //是否为数字
 
-                 //                    if (UTF[0] == 9) { //tab处理
 
-                 //                        U.M.StopDefault();
 
-                 //                        this.CreateR().Replace(" ", null, true); //插入tag值
 
-                 //                    }
 
-                 //                    //                    else if (!(UTF[1] || UTF[2]) && UTF[4].length < 2) { //需要重新记录
 
-                 //                    //                        _UDE = this.OAT[_UTP];
 
-                 //                    //                        if (_UDE.l != _UDE.length - 1) {
 
-                 //                    //                            _UDE[_UDE.l].C = "";
 
-                 //                    //                            _UDE.splice(_UDE.l + 1, _UDE.length);
 
-                 //                    //                        }
 
-                 //                    //                        else {
 
-                 //                    //                            this.ADQJ();
 
-                 //                    //                        }
 
-                 //                    //                    }
 
-                 //                    else if (!(UTF[1] || UTF[2]) && (UTF[0] == 13 || UTF[0] == 8 || UTF[0] == 3 || (UTF[0] > 32 && UTF[0] < 40) || UTF[0] == 46 || (UTF[0] > 63231 && UTF[0] < 63236) || (UTF[0] > 63272 && UTF[0] < 63278 && UTF[0] != 63274)) && this.TF) { //特殊键处理 
 
-                 //                    }
 
-                 //                }
 
-                 break;
 
-         }
 
-         if (this.CB && this.CB(U.Ut.isString(UTF) ? UTF : UTF[4], [this.Parent()], this, UTF, window) === 1) { //回调设置
 
-             //  U.M.StopDefault();
 
-         }
 
-     },
 
-     /**
 
-     *  键盘输入输出处理
 
-     *
 
-     */
 
-     CLKU: function () {
 
-         var _UDPD = this.PSO,
 
-                 _UTF = this.Dectect.getValue(); //获取键盘属性值
 
-         //        //后退键的处理
 
-         //        if (_UTF[4] == "Backspace" && !$(_UDPD).Child().length) { } //后退键处理
 
-         //        //方向输出键 
 
-         //        else if (!(_UTF[1] || _UTF[2]) && (_UTF[0] == 13 || _UTF[0] == 8 || _UTF[0] == 3 || (_UTF[0] > 32 && _UTF[0] < 40) || _UTF[0] == 46 || (_UTF[0] > 63231 && _UTF[0] < 63236) || (_UTF[0] > 63272 && _UTF[0] < 63278 && _UTF[0] != 63274))) {
 
-         //            this.ADQJS("");
 
-         //        }
 
-         //执行回调使用
 
-         if ((this.CB) && (this.CB("UP", [this.Parent()], this, _UTF, window) == 1)) {
 
-             //    U.M.StopDefault();
 
-         }
 
-         //this.CreateR(false); //创建记录
 
-     },
 
-     //#endregion
 
-     /**
 
-     *  点击时候创建光标
 
-     *
 
-     * @param   {element}   需要复制到的元素
 
-     */
 
-     CLMU: function () {
 
-         // this.ADQJS("");
 
-         this.CreateR(); //重新记录光标
 
-         var mb = window.parent.document.getElementsByClassName("UD_SYF_S UD_SYKO")[window.parent.document.getElementsByClassName("UD_SYF_S UD_SYKO").length - 1];
 
-         // UDPD = $(this.Parent(null, true,true)).Parent({ "tagName": "DIV" }); //获取当前行的元素
 
-         _UTH = this.getBoundingClientRect(); //获取光标位置和大小
 
-         // U.Alert(_UTH.height);
 
-         // window.parent.document.getElementById("UD_Word"+U.Word.TF.fileinfo.UserDirectoryParentID).children[2].children[0].children[0].children[0].children[7].children[0].value=this.Parent(null, true,true).style.fontSize||"10.5pt";
 
-         mb.children[2].children[0].children[0].children[0].children[7].children[0].value = this.Parent(null, true, true).style.fontSize || "10.5pt";
 
-     },
 
-     //#endregion
 
-     Cut: function () {
 
-         this.CreateR(); //重新记录光标
 
-         this.CTH = this.GetSelectedHtml(); //复制的文字处理
 
-         if (this.CB && this.CB("Cut", [this.Parent()], this, "Cut", window) === 1) { //回调设置
 
-             //  U.M.StopDefault();
 
-         }
 
-     },
 
-     /**
 
-     *  复制
 
-     *
 
-     * @param   {string}   需要复制的位置
 
-     */
 
-     Copy: function () { //复制
 
-         this.CreateR(); //重新记录光标
 
-         this.CTH = this.GetSelectedHtml(); //复制的文字处理
 
-         if (this.CB && this.CB("Copy", [this.Parent()], this, "Cut", window) === 1) { //回调设置
 
-             //  U.M.StopDefault();
 
-         }
 
-     },
 
-     /**
 
-     *  粘贴
 
-     *
 
-     * @param   {element}   需要粘贴到的元素
 
-     */
 
-     Paste: function (UDOD) { //粘贴
 
-         this.CreateR(); //重新记录光标
 
-         if (this.CB && this.CB("Paste", [this.Parent()], this, "Cut", window) === 1) { //回调设置
 
-             //  U.M.StopDefault();
 
-         }
 
-         //        if (this.CTH) {
 
-         //            if (UDOD) { //添加到指定的元素
 
-         //                UDOD.innerHTML = this.CTH.outerHTML || this.CTH;
 
-         //            }
 
-         //            else { //添加到指定的位置
 
-         //                this.Replace(this.CTH, null, true); this.CLMU();
 
-         //            }
 
-         //        }
 
-     },
 
-     /**
 
-     *  指定的文字生成写入的样式元素
 
-     *
 
-     * @param   {string}   需要写入的文字
 
-     * @param   {object}   转化的样式集 {width:100px,height:100px}
 
-     * @return   {string}   需要粘贴到的元素
 
-     */
 
-     SetStyle: function (UTH, UDE) { //写入样式生成元素
 
-         var i, _UDAD, _UTH = "",
 
-         _UDOD = $$("span", { "innerHTML": UTH });
 
-         this.writeStyle(_UDOD, UDE); //设置样式输出
 
-         return $("*", _UDOD).length ? _UDOD.innerHTML : _UDOD.outerHTML; //设置新的样式 
 
-     },
 
-     /**
 
-     *  通过元素设置样式
 
-     *
 
-     * @param   {string}   需要写入的元素
 
-     * @param   {object}   转化的样式集 {width:100px,height:100px}
 
-     * @return   {string}   需要粘贴到的元素
 
-     */
 
-     writeStyle: function (UDOD, UDE) { //
 
-         var i, j, _UTF,
 
-         _UKE = {},
 
-         _UCE = {},
 
-         _USE = ["textAlign"], //textAlign 无法设置行内元素 要设置块状元素才可以
 
-         _UDPD = this.Parent(), //上级元素
 
-         _UDAD = $(UDOD).Nodes(); //获取所有的子元素
 
-         while (_UDPD.tagName == "SPAN") {
 
-             _UDPD = $(_UDPD).Parent();
 
-         }
 
-         //循环需要添加的样式集合
 
-         for (i in UDE) {
 
-             if (UDE.hasOwnProperty(i)) {
 
-                 if (_USE.indexOf(U.M.CssTHH(i)) > -1 ? _UCE : _UKE == _UCE) { //判断样式中是否有行内元素无法设置的样式 如果有就添加到全局设置样式的区域
 
-                     _UCE[i] = UDE[i][0] == _UDPD.style[i] ? UDE[i][1] : UDE[i][0];
 
-                 }
 
-                 else { //可设置样式区域
 
-                     _UKE[i] = UDE[i][0];
 
-                     if (UDOD.style && UDOD.style[i] == UDE[i][0]) { //判断元素的样式是否已经存在 
 
-                         _UKE[i] = UDE[i][1];
 
-                     }
 
-                     else {
 
-                         //子元素设置样式
 
-                         for (j = 0; j < _UDAD.length; j++) {
 
-                             if (_UDAD[j].style && _UDAD[j].style[i] == UDE[i][0]) {
 
-                                 _UKE[i] = UDE[i][1]; break;
 
-                             }
 
-                         }
 
-                     }
 
-                 }
 
-             }
 
-         }
 
-         //设置只有块状元素才能设置的样式
 
-         (_UDPD.style) && ($(_UDPD).addAttrArray({ "style": _UCE }));
 
-         //所有元素设置指定的样式
 
-         $(UDOD).addAttrArray({ "style": _UKE });
 
-         $("*", UDOD).addAttrArray({ "style": _UKE });
 
-     },
 
-     /**
 
-     *  获取光标据制定元素所在的位置
 
-     *
 
-     * @param   {element}   指定的元素
 
-     * @param   {boolean}   获取到指定的元素的开头的范围
 
-     * @return   {number}   范围
 
-     */
 
-     GetGBWZ: function (UDOD, UTF) {
 
-         var _USE, _URE, _UDTD;
 
-         if (window.getSelection) {//HTML5
 
-             _USE = this.CW.getSelection();
 
-             _URE = _USE.rangeCount ? _USE.getRangeAt(0) : this.R;
 
-             return UTF ? _URE.startOffset : _URE.endOffset;
 
-         }
 
-         else { //ie
 
-             try {
 
-                 UDOD = UDOD || this.Parent();
 
-                 _URE = this.QX(0, 0, UDOD);
 
-                 _URE.setEndPoint("EndTo" + (UTF ? "Start" : "End"), this.R);
 
-                 return (_UDTD = $$("div", { "innerHTML": _URE.htmlText })).innerText.length + ($("img", _UDTD).length);
 
-             } catch (e) { }
 
-         }
 
-         return 0;
 
-     },
 
-     /**
 
-     *  获取光标据制定元素所在的位置
 
-     *
 
-     * @param   {element}   指定的元素
 
-     * @param   {boolean}   获取到指定的元素的开头的范围
 
-     * @return   {number}   范围
 
-     */
 
-     getBoundingClientRect: function () {
 
-         if (window.getSelection) {//HTML5
 
-             return this.R.getBoundingClientRect();
 
-         }
 
-         else {
 
-             return {
 
-                 bottom: this.R.P.boundingBottom,
 
-                 height: this.R.P.boundingHeight,
 
-                 left: this.R.P.boundingLeft,
 
-                 right: this.R.P.boundingRight,
 
-                 top: this.R.P.boundingTop,
 
-                 width: 1,
 
-                 x: this.R.P.boundingLeft,
 
-                 y: this.R.P.boundingTop
 
-             };
 
-         }
 
-     },
 
-     /**
 
-     *  判断是否在相同的范围
 
-     *
 
-     * @param   {object}   range 光标对象
 
-     * @return  {booean}   是否在指定的范围中
 
-     */
 
-     IsP: function (UDR) {
 
-         if (!UDR) { return true; }
 
-         if (window.getSelection) {
 
-             var _UDE = document.getSelection();
 
-             return (!_UDE.rangeCount || ((_UDE = _UDE.getRangeAt(0)) && UDR.endContaine == _UDE.endContaine && UDR.startContaine == _UDE.startContaine && UDR.endOffset == _UDE.endOffset && UDR.startOffset == _UDE.startOffset));
 
-         }
 
-         else {
 
-             try { return UDR.isEqual(document.selection.createRange()); } catch (e) { }
 
-         }
 
-         return false;
 
-     },
 
-     /**
 
-     *  判断元素是否在指定区域
 
-     *
 
-     * @param   {object}   range 光标对象
 
-     * @return  {booean}   是否在指定的范围中
 
-     */
 
-     isE: function (UDOD) {
 
-         if (window.getSelection) { //HTML5
 
-             return this.S.containsNode(UDOD, true);
 
-         }
 
-         else {
 
-             _URE = document.body.createTextRange();
 
-             try {
 
-                 _URE.moveToElementText(UDOD);
 
-                 return this.R.inRange(_URE);
 
-             }
 
-             catch (e) { return false; }
 
-         }
 
-     },
 
-     /**
 
-     *  选取元素计算长度
 
-     *
 
-     * @param   {object}   元素
 
-     * @return  {number}   元素文字的长度
 
-     */
 
-     getLen: function (UDOD) { //
 
-         return $("img", UDOD).length + UDOD.innerText.length;
 
-     },
 
-     //#region 前进后退处理区域
 
-     /**
 
-     * 输入等待添加前进后退
 
-     *
 
-     * @param   {obnject} U.D.E.SelectionRange的派生对象
 
-     * @return   {funciotn} 光标记录回调函数
 
-     */
 
-     ADQJ: function (UDR) {
 
-         clearTimeout(this.TIM[0]); //清除等待
 
-         this.TIM[0] = setTimeout((this.TIM[1] = U.M.apply(this, [[this.ADQJS, ["", UDR]]])), 500); //等待生成记录
 
-         return this.TIM[1]; //返回回调
 
-     },
 
-     /**
 
-     * 添加前进后退记录
 
-     *
 
-     * @param   {string} 前进后退记录的内容
 
-     * @param   {object} U.D.E.SelectionRange的派生对象
 
-     */
 
-     ADQJS: function (UHT, UDR) { //判断添加
 
-         clearTimeout(this.TIM[0]); //清除等待
 
-         this.TIM = []; //记录前进后退的对象
 
-         this.JHGB(UHT, UDR, this); //记录
 
-     },
 
-     /**
 
-     * 记录前进后退(每一次结束自动创建)
 
-     *
 
-     * @param   {string} 前进后退记录的内容
 
-     * @param   {object} U.D.E.SelectionRange的派生对象
 
-     * @param   {object} 当前使用的this对象
 
-     */
 
-     JHGB: function (UHT, UDR, UE) {
 
-         var _UTF = this.TF, //标记 识别id
 
-             _UDE = this.OAT[_UTF], //获取识别id下的光标对象
 
-             _UKE = this.IsP(_UDE[_UDE.l]["OR"]["R"]); //判断光标是否上次记录的范围
 
-         (!_UKE && _UTF) && (this.AddHT(UHT, UDR, UE)); //如果没有记录该光标 记录
 
-     },
 
-     /**
 
-     * 添加前进后退区域 直接传参记录
 
-     *
 
-     * @param   {string} 前进后退记录的内容
 
-     * @param   {object} U.D.E.SelectionRange的派生对象
 
-     * @param   {object} 当前使用的this对象
 
-     */
 
-     AddHT: function (UHT, UDR, UE) {
 
-         var i, _UTP,
 
-         _UTF = this.TF, //识别id
 
-         _UDE = this.OAT[_UTF], //识别id下前进后退所有的对象
 
-         _UOE = _UDE[_UDE.l]; //当前前进后退所在的对象
 
-         _UDE.l++; //生成新的对象的位置
 
-         _UDE.splice(_UDE.l, _UDE.length - _UDE.l, (_UTE = { "OR": new this.init(UE, false), "C": (UHT || "") })); //添加新的前进后退对象
 
-         if (window.getSelection) { //html5 光标保存
 
-             _UOE["OR"]["R"].setEnd(_UTE["OR"]["R"].startContainer, _UTE["OR"]["R"].startOffset);
 
-         }
 
-         else { //ie位置大小保存
 
-             _UTE = ["boundingWidth", "offsetLeft", "boundingLeft", "boundingTop", "offsetTop", "boundingHeight"]; //这里为光标的位置记录
 
-             _UOE.P = {};
 
-             for (i = 0; i < _UTE.length; i++) { //循环记录光标
 
-                 _UOE.P[_UTE[i]] = _UOE.OR.R[_UTE[i]];
 
-             }
 
-         }
 
-     },
 
-     /**
 
-     *  失去焦点的时候保存
 
-     *
 
-     * @param   {element}   需要粘贴到的元素
 
-     */
 
-     Brul: function () {
 
-         (this.TIM[1]) && (this.TIM[1]());
 
-     }
 
-     //#endregion
 
- }
 
- //前进后退的处理 需要修改
 
- U.D.E.SORange.init.prototype = U.D.E.SORange;
 
- //前进后退处理函数区域
 
- //#region 编辑器提供的接口处理区域
 
- /**
 
- *  设置选择区域的样式处理
 
- *
 
- * @param   {element}   编辑元素
 
- * @param   {element}   需要修改的样式集
 
- * @param   {element}   光标方法集合对象
 
- * @param   {element}   光标所在的域的识别id
 
- * @return   {element}   需要粘贴到的元素
 
- */
 
- U.D.E.FontSizeType = function (UDOD, USE, UDE, UTF) {
 
-     UDE = UDE || U.D.E.GetSelectionRange(window, UDOD, { "TF": UTF || "QL" }); //获取光标方法集
 
-     var i, _UFT,
 
-     _UST = "", //获取设置样式后的html值
 
-     _UKE = {}, //最终修改样式的值
 
-     _UDPD = UDE.Parent(), //获取父亲层
 
-     _UTH = UDE.GetSelectedHtml(); //选择的元素
 
-     //获取可设置样式的层
 
-     while (!_UDPD.tagName) {
 
-         _UDPD = $(_UDPD).Parent();
 
-     }
 
-     //样式设置
 
-     for (i in USE) {
 
-         if (USE.hasOwnProperty(i)) {
 
-             USE[i] = typeof USE[i] == "object" ? USE[i] : [USE[i], USE[i]];
 
-             _UKE[i] = USE[i];
 
-         }
 
-     }
 
-     //有选取
 
-     if (_UTH) {
 
-         _UST = UDE.SetStyle(_UTH, USE);
 
-         USE = USE;
 
-     }
 
-     else {
 
-         UDE.writeStyle(UDE.Parent(null, true), USE);
 
-     }
 
-     UDE.Replace(_UST, null, _UST ? null : true);
 
-     return UDE; //生成添加的内容
 
- }
 
- //#endregion
 
- //键盘检查器
 
- U.D.E.codeDetect = (function () {
 
-     var _UKE = { 3: "Enter", 8: "Backspace", 9: "Tab", 13: "Enter", 16: "Shift", 17: "Ctrl", 18: "Alt", 19: "Pause",
 
-         20: "CapsLock", 27: "Esc", 32: "Space", 33: "PageUp", 34: "PageDown", 35: "End", 36: "Home", 37: "Left",
 
-         38: "Up", 39: "Right", 40: "Down", 44: "PrintScrn", 45: "Insert", 46: "Delete", 48: "0", 49: "1", 50: "2", 51: "3", 52: "4", 53: "5", 54: "6", 55: "7", 56: "8", 57: "9", 59: ";", 65: "A", 66: "B", 67: "C", 68: "D", 69: "E", 70: "F", 71: "G", 72: "H", 73: "I", 74: "J", 75: "K", 76: "L", 77: "M", 78: "N", 79: "O", 80: "P", 81: "Q", 82: "R", 83: "S", 84: "T", 85: "U", 86: "V", 87: "W", 88: "X", 89: "Y", 90: "Z", 91: "Mod", 92: "Mod", 93: "Mod", 107: "=", 109: "-", 112: "F1", 113: "F2", 114: "F3", 115: "F4", 116: "F5", 117: "F6", 118: "F7", 119: "F8", 120: "F9", 121: "F10", 122: "F11", 123: "F12", 127: "Delete", 186: ";", 187: "=", 188: ",", 189: "-", 190: ".", 191: "/", 192: "`", 219: "[", 220: "\"", 221: "]", 222: "'", 63232: "Up", 63233: "Down", 63234: "Left", 63235: "Right", 63236: "F1", 63237: "F2", 63238: "F3", 63239: "F4", 63240: "F5", 63241: "F6", 63242: "F7", 63243: "F8", 63244: "F9", 63245: "F10", 63246: "F11", 63247: "F12", 63272: "Delete", 63273: "Home", 63275: "End", 63276: "PageUp", 63277: "PageDown", 63302: "Insert"
 
-     },
 
-             _USE = { "alt": [[37, "goLineStart"], [38, "goDocStart"], [39, "goLineEnd"]], "ctrl": [[65, "selectAll"], [8, "delGroupBefore"], [67, "copy"], [86, "paste"], [68, "deleteLine"], [46, "delGroupAfter"], [40, "goDocEnd"], [63275, "goDocEnd"], [70, "find"], [71, "findNext"], [63273, "goDocStart"], [37, "goGroupLeft"], [39, "goGroupRight"], [83, "save"], [89, "redo"], [90, "undo"], [219, "indentLess"], [221, "indentMore"]], "shift-ctrl": [[70, "replace"], [71, "findPrev"], [82, "replaceAll"], [90, "redo"]] },
 
-             _ = function (UDE) { return new _.init(UDE); }; //初始化查看使用
 
-     U.Ut.AddObj(_, _.prototype = {
 
-         init: function (UDE) { //初始化检测器
 
-             UDE = UDE || {}; U.Ut.AddObj(this, UDE); (UDE.el) && (this.bind(UDE.el));
 
-         },
 
-         bind: function (UDOD) { //绑定函数时间
 
-             $(UDOD).bind({ keydown: U.M.apply(this, this.down) });
 
-         },
 
-         down: function () { //键盘事件
 
-             (this.cb) && (this.cb.call(this, this.getValue(), this.el));
 
-         },
 
-         getValue: function () { //根据输入获取检测器值
 
-             var i, j, _UGE, _UCE, e = event, k = e.keyCode;  //基础编辑器快捷键
 
-             _UGE: for (i in _USE) {
 
-                 if (_USE.hasOwnProperty(i)) {
 
-                     _UCE = i.split("-"); for (j = 0; j < _UCE.length; j++) { if (!e[_UCE[j] + "Key"]) { continue _UGE; } } for (j = 0; j < _USE[i].length; j++) {
 
-                         if ((_UCE = _USE[i][j])[0] == k) {
 
-                             return _UCE[1];
 
-                         };
 
-                     }
 
-                 }
 
-             }
 
-             return [k, e.altKey, e.ctrlKey, e.shiftKey, _UKE[k] || ""];
 
-         },
 
-         set: function () { //键盘设置 允许自定义键监视
 
-         }
 
-     });
 
-     _.init.prototype = _; return _;
 
- })()
 
 
  |