Namespace.register("U.MD.O.W.O.O"); // 大纲视图 /* //目录模板功能。原名U.O.W.Catalog,缩写:U.O.W.CL Namespace.register("U.O.W.CL"); */ Namespace.register("U.MD.O.W.O.O"); // 大纲视图 //window.onload = function () { // U.MD.O.W.O.O.BindEle(); //} U.MD.O.W.O.O.Flag = true; // 只运行一次 /* 加载目录 */ U.MD.O.W.O.O.Load = function (pos) { //window.onload 调用 UW.U.OU.R = U.UF.E.GetSelectionRange(window, 需要聚焦的元素, {CB : function(){} ,TF : 'sbzzm' }); //onmousedown 不要用 onclick UW.U.OU.R.Parent() 当前所在的元素 //onmousedown UW.U.OU.R.Replace(标题一) var UW = U.MD.O.getOfficeWindow(); if (UW.$(".U_MD_O_W_Font_C_Txt")[0] && !arguments[1]) { return }; // $(".U_MD_O_W_Font_Cat")[0].innerHTML = ''; var i = 0, // 循环 j = 0; // 处理相同id的元素 Udiv = UW.$("#U_MD_O_W_E_body div"), Child = null, // 选中元素的所有兄弟节点 pos = pos || UW.$(".U_MD_O_H_body_main_text")[0]; // 目录生成位置 if (!UW.$(".U_Boom_Box")[0]) { // 判断目录是否已经生成过 var U_Boom_Box = $$("div",{"className": "U_Boom_Box","contenteditable": "false"}); pos.insertBefore(U_Boom_Box, pos.children[0]); } UW.$(".U_Boom_Box")[0].innerHTML = ""; var U_Boom_Box = UW.$(".U_Boom_Box")[0]; var U_MD_O_W_Font_C_Txt = $$("div",{"class": "U_MD_O_W_Font_C_Txt","innerText": "目录"}, U_Boom_Box); var U_MD_O_W_Font_C_Wrap = $$("div",{"class": "U_MD_O_W_Font_C_Wrap"}, U_Boom_Box) // 遍历div标签 for (; i < Udiv.length; i++) { if (Udiv[i].className) { j = i; Child = Udiv[i]; if (Child.id) { // 解决用户回车生成多个同id元素重复循环 if (i >= 1 && Child.id == Udiv[--j].id && Child.textContent.trim() != "") { Child.id = "T" + Date.parse(new Date()); }; if (Child.childNodes[0] !== undefined && Child.childNodes[0].nodeValue != null) { // 解决空标题 var U_MD_O_W_Font_C_Box = $$("div", { "class": "U_MD_O_W_Font_C_Box" }, U_MD_O_W_Font_C_Wrap); var a = $$("a", { "class": "U_MD_O_W_Font_C_Name", "style": { "margin-left": Child.className.match(/\d+$/)[0] }, "href": "#" + Child.id }, U_MD_O_W_Font_C_Box); // var span = $$("span", { // "innerText": "", // "style": { // "margin-left": "5px", // "float": "left" // } // }, U_MD_O_W_Font_C_Box); a.innerHTML = Child.childNodes[0].nodeValue; $$("div", {"class": "U_MD_O_W_Font_C_Dash","style":{"width": "80%"}}, U_MD_O_W_Font_C_Box); $$("div",{"class": "U_MD_O_W_Font_C_Number","innerText": U.MD.O.W.O.O.UpPageNum(Child),"style":{"width": "auto"}}, U_MD_O_W_Font_C_Box); }; }; }; }; } /* 按钮点击 */ U.MD.O.W.O.O.Click = function (e) { // if (U.MD.O.W.O.O.Flag) { // UW.U.OU.R = U.UF.E.GetSelectionRange(window, $("#K")[0].contentWindow.$("#U_MD_O_W_E_body")[0], { // SO: $("#K")[0].contentWindow.$("#U_MD_O_W_E_body")[0], // "TF": "Title1" // }) // U.MD.O.W.O.O.Flag = false; // }; // var UW = U.MD.O.getOfficeWindow($("#K")); // U.OU.R.CreateR(); switch (e) { case "一级目录": U.MD.O.W.O.O.NewTitle("U_MD_O_W_Font_25px_0"); break; case "二级目录": U.MD.O.W.O.O.NewTitle("U_MD_O_W_Font_22px_40"); break; case "三级目录": U.MD.O.W.O.O.NewTitle("U_MD_O_W_Font_20px_60"); break; case "生成目录": U.MD.O.W.O.O.Load(U.MD.O.getOfficeWindow().$("#U_MD_O_W_E_body .U_MD_O_H_body_main_text")[0]); break; case "更新目录": U.MD.O.W.O.O.Load(null, 'update'); break; case "正文": U.MD.O.W.O.O.NewTitle(); break; default: break; } } /* 绑定事件 */ U.MD.O.W.O.O.BindEle = function () { // 更新目录 $(".U_MD_O_W_Font_F_Update").bind("mousedown", function () { U.MD.O.W.O.O.Load(null, 'update'); }); // 解决失焦问题 $("#K")[0].contentWindow.$("#U_MD_O_W_E_body").bind("click", function () { U.OU.R.CreateR(); }) } /* 创建标题 */ U.MD.O.W.O.O.NewTitle = function (className) { var UW = U.MD.O.getOfficeWindow(); var div = $$("div", {"innerText": "请输入正文"}), inText = UW.U.OU.R.Parent().innerText || UW.U.OU.R.Parent().nodeValue; var NowDate = Date.parse(new Date()); if (className) { div = $$("div", {"id": "T" + NowDate,"contenteditable": true,"class": className,"innerText": inText}); }; // 在当前行有文字的基础上运行代码 if (UW.U.OU.R.R.endContainer.nodeValue !== null) { // 若选中文字 设置文字样式 if (UW.U.OU.R.GetSelectedText().trim() !== "" && className !== undefined) { // 解决标题重复嵌套导致布局错乱问题 if (UW.U.OU.R.R.endContainer.parentNode.id) { UW.U.OU.R.R.endContainer.parentNode.className = className; UW.U.OU.R.R.endContainer.parentNode.innerText = UW.U.OU.R.GetSelectedText(); return }; div.innerText = UW.U.OU.R.GetSelectedText(); UW.U.OU.R.Replace(div); return; }; // 解决空文本嵌套标题bug if (UW.U.OU.R.Parent().nodeName === "DIV" && className !== undefined && UW.U.OU.R.GetSelectedText().trim() !== "") { UW.U.OU.R.Parent().id = "T" + NowDate; UW.U.OU.R.Parent().className = className; return; }; // 若当前元素是div 则直接在该div上添加样式 if (UW.U.OU.R.Parent().parentNode.nodeName === "DIV" && className !== undefined && UW.U.OU.R.Parent().parentNode.id !== "U_MD_O_W_E_body") { UW.U.OU.R.Parent().parentNode.id = "T" + NowDate; UW.U.OU.R.Parent().parentNode.className = className; return; }; // 若设置为正文 删除当前元素的id class if (UW.U.OU.R.Parent().parentNode.id && className === undefined) { UW.U.OU.R.Parent().parentNode.removeAttribute("id"); UW.U.OU.R.Parent().parentNode.removeAttribute("class") return; }; }; // 解决空白行插入正文bug if (UW.U.OU.R.R.endContainer.nodeValue === null && UW.U.OU.R.GetSelectedText().trim() === "" && className === undefined && UW.U.OU.R.Parent().id !== "U_MD_O_W_E_body") { // 插入文字同时清空样式 UW.U.OU.R.R.endContainer.className = ""; UW.U.OU.R.Replace("请输入正文"); return }; // 当前行内有文字 点击正文清除样式 if (UW.U.OU.R.R.endContainer.nodeValue !== null && className === undefined) { UW.U.OU.R.R.endContainer.parentNode.className = ""; return }; // 当前行无文字不给予处理 if (div.innerText.trim() == "" && UW.U.OU.R.R.endContainer.nodeValue === null) { UW.U.OU.R.Replace(""); return } UW.U.OU.R.Replace(div, UW.U.OU.R.QX()); } /* 阅览模式 */ U.MD.O.W.O.O.Read = function (dis, boolen) { var dis = dis || "none", boolen = boolen || 'false'; var Wrap = $(".U_MD_O_W_Font_Content"), i = 0; $(".U_MD_O_W_Font_Features")[0].style.display = dis; for (; i < Wrap.length; i++) { Wrap[i].setAttribute('contenteditable', boolen) }; } /* 更新页码 */ U.MD.O.W.O.O.UpPageNum = function (child) { var UW = U.MD.O.getOfficeWindow(); var Paper = UW.$("#U_MD_O_W_E_body"), i = 0; for (; i < Paper.length; i++) { if (U.UF.EL.isChild(Paper[i], child)) { return ++i } }; }