//PC端表情包 Namespace.register("U.MD.UI.face"); /* ** 添加表情包 ** @param {element} button 插入表情包的元素 ** @param {element} el 输入框的元素 */ U.MD.UI.face = function (button, el) { var i, _el1, _el2; if ($("#U_MD_UI_face")[0]) {//判断是否存在表情包 if ($("#U_MD_UI_face")[0].style.display == "none") {//如果存在,判断是否隐藏 U.selectEl("#U_MD_UI_face")[0].style.display = "block"; //如果隐藏 则显示表情包 } else { U.selectEl("#U_MD_UI_face")[0].style.display = "none"; //否则,隐藏 } } else {//不存在表情包,创建表情包 var _el = $$("div", { "style": { "position": "relative"} }, U.selectEl(button)[0]); //创建表情包的总样式 _el1 = $$("div", { "id": "U_MD_UI_face", "className": "U_MD_UI_face", "onmousedown": U.UF.EV.stopBubble }, _el); //创建表情包的阻止冒泡事件 _el2 = $$("div", { "className": "U_MD_UI_face_H" }, _el1); //创建存放表情的父级元素 for (i = 0; i <= 104; i++) {//循环打印所有的表情包 共104个 $$("button", { "className": "U_MD_UI_face_C", "style": { "opacity": "0" }, "onclick": U.UF.C.closure(function (i) { U.UF.EV.stopBubble(); U.MD.UI.face.printEmoticon(_el1, i, U.UF.E.getRangeAt(), el) }, [i]) }, _el2); //创建单个表情,并且给每个表情赋值一个点击事件,参数为表情框元素,第几个表情,光标位置,输入框的位置,点击后打印表情到输入框的位置 } //获取整个body部分的点击事件 U.selectEl('body').unbind('click', U.MD.UI.face.externalClick); U.selectEl('body').bind('click', U.MD.UI.face.externalClick); } el.focus(); }; U.MD.UI.face.externalClick = function (e) { if (window.event.srcElement.tagName != "BUTTON" && U.selectEl("#U_MD_UI_face")[0]) {//判断点击的是否是发送表情的按钮 U.selectEl("#U_MD_UI_face")[0].style.display = "none"; //如果不是,则隐藏掉表情包 } } /* 点击表情框处理 * * @param {element} el1 表情框元素 * @param {number} i 第几个表情。通过i的值代表是哪个表情 * @param {range} range 光标的位置,先获取光标对象,然后通过光标对象获取光标位置 * @param {element} 对应路径 /img/ChatingFaceGif/[face](i).gif */ U.MD.UI.face.printEmoticon = function (el1, i, range, el) { var _imageurl = "/img/ChatingFaceGif/[face](" + i + ").gif"; //表情路径 if (!range) { $$("img", { "onerror": U.MD.C.imgError, "src": _imageurl, "contentEditable": "true" }, U.selectEl(el)[0]); } else { var img = ''; U.UF.E.addRange(img, null, true); } U.selectEl(el1)[0].style.display = "none"; }