import htmlContent from "../htmlEditor/htmlContent.js";
let backList = [],
recoverList = [];
const headerClickFun = {
//点击事件,展开html代码
showHtml: (e, domId) => {
let list = e.target.parentNode.children;
//将节点列表(NodeList)转化为数组
let classList = Array.prototype.slice.call(e.target.classList, 0);
let isSelected = true;
if (classList.includes("rich-text-outicon-selected")) {
//取消选中
e.target.classList.remove("rich-text-outicon-selected");
isSelected = false;
} else {
//选择
e.target.classList.add("rich-text-outicon-selected");
}
for (let i = 0; i < list.length; i++) {
if (isSelected && list[i].getAttribute("data-type") !== "showHtml") {
list[i].style.opacity = 0.5;
list[i].style.cursor = "default";
} else if (list[i].getAttribute("data-type") !== "showHtml") {
list[i].style.opacity = 1;
list[i].style.cursor = "pointer";
}
}
let iframe = document.getElementById(domId + "-iframe"),
textarea = document.getElementById(domId + "-textarea");
// textarea.onchange = null;
if (isSelected) {
let html = htmlContent.getHtml(domId);
iframe.style.display = "none";
textarea.style.display = "block";
textarea.value = html;
// textarea.onchange = (e) => {
// htmlContent.setHtml(e.target.value);
// };
} else {
iframe.style.display = "block";
textarea.style.display = "none";
htmlContent.setHtml(domId, textarea.value);
textarea.value = "";
}
},
//后退事件
doBack: (e, domId) => {
let doc = document.getElementById(domId + "-iframe").contentDocument;
doc.body.focus();
doc.execCommand("undo");
return;
let list = document.getElementById(domId + "-iframe").contentWindow
.backDataList;
let len = list.length;
if (len === 1) {
htmlContent.setHtml(domId, "");
} else {
htmlContent.setHtml(domId, list[len - 2]);
document
.getElementById(domId + "-iframe")
.contentWindow.recoverDataList.unshift(list[len - 1]);
document
.getElementById(domId + "-iframe")
.contentWindow.backDataList.splice(len - 1);
}
},
//前进事件
doRecover: (e, domId) => {
let doc = document.getElementById(domId + "-iframe").contentDocument;
doc.body.focus();
doc.execCommand("redo");
return;
let list = document.getElementById(domId + "-iframe").contentWindow
.recoverDataList;
let len = list.length;
if (len > 0) {
htmlContent.setHtml(domId, list[0]);
document
.getElementById(domId + "-iframe")
.contentWindow.backDataList.push(list[0]);
document
.getElementById(domId + "-iframe")
.contentWindow.recoverDataList.splice(0, 1);
}
},
//打印机事件
doPrint: (e, domId) => {
let features =
"fullscreen=no,height=500, width=800, top=100, left=100, toolbar=no, menubar=no,scrollbars=no,resizable=no, location=no, status=no"; //设置新窗口的特性
let newWindow = window.open("打印窗口", "_blank", features);
let docStr = document.getElementById(domId + "-iframe").contentDocument.body
.innerHTML; //htmlContent.getHtml(domId);
newWindow.document.write(docStr);
newWindow.document.close();
newWindow.print();
newWindow.close();
},
//剪切
doCut: (e, domId) => {
//let win = document.getElementById(domId + "-iframe").contentWindow;
let doc = document.getElementById(domId + "-iframe").contentDocument;
//document.selection.createRange().text; // IE9以下使用
// let selectText = win.getSelection
// ? win.getSelection().toString()
// : doc.selection.createRange().text;
doc.execCommand("Cut");
},
//复制
doCopy: (e, domId) => {
let doc = document.getElementById(domId + "-iframe").contentDocument;
doc.execCommand("Copy");
},
doPaste: (e, domId) => {
let doc = document.getElementById(domId + "-iframe").contentDocument;
doc.body.focus();
try {
//readText
navigator.clipboard
.readText()
.then(async (v) => {
//read()
// for (const clipboardItem of v) {
// for (const type of clipboardItem.types) {
// const blob = await clipboardItem.getType(type);
// console.log(blob.text);
// //console.log(URL.createObjectURL(blob));
// }
// }
doc.execCommand("insertText", false, v);
})
.catch((v) => {
console.log("doPaste获取剪贴板失败: ", v);
});
} catch (err) {
console.error("Failed to read clipboard contents: ", err);
}
//doc.execCommand("Paste");
},
doPasteUnformat: (e, domId) => {
let doc = document.getElementById(domId + "-iframe").contentDocument;
doc.body.focus();
try {
navigator.clipboard
.readText()
.then((v) => {
//console.log("doPaste获取剪贴板成功:", v);
doc.execCommand("insertHtml", false, v);
})
.catch((v) => {
console.log("doPaste获取剪贴板失败: ", v);
});
} catch (err) {
console.error("Failed to read clipboard contents: ", err);
}
},
//左对齐
justifyLeft: (e, domId) => {
let doc = document.getElementById(domId + "-iframe").contentDocument;
doc.body.focus();
doc.execCommand("justifyLeft");
},
justifyCenter: (e, domId) => {
let doc = document.getElementById(domId + "-iframe").contentDocument;
doc.body.focus();
doc.execCommand("justifyCenter");
},
justifyRight: (e, domId) => {
let doc = document.getElementById(domId + "-iframe").contentDocument;
doc.body.focus();
doc.execCommand("justifyRight");
},
justifyFull: (e, domId) => {
let doc = document.getElementById(domId + "-iframe").contentDocument;
doc.body.focus();
doc.execCommand("justifyFull");
},
insertOrderedList: (e, domId) => {
let doc = document.getElementById(domId + "-iframe").contentDocument;
doc.body.focus();
doc.execCommand("insertOrderedList");
},
insertUnorderedList: (e, domId) => {
let doc = document.getElementById(domId + "-iframe").contentDocument;
doc.body.focus();
doc.execCommand("insertUnorderedList");
},
doIndent: (e, domId) => {
let doc = document.getElementById(domId + "-iframe").contentDocument;
doc.body.focus();
doc.execCommand("indent");
},
doOutdent: (e, domId) => {
let doc = document.getElementById(domId + "-iframe").contentDocument;
doc.body.focus();
doc.execCommand("outdent");
},
//下标
doSubscript: (e, domId) => {
let doc = document.getElementById(domId + "-iframe").contentDocument;
doc.body.focus();
doc.execCommand("subscript");
},
doSuperscript: (e, domId) => {
let doc = document.getElementById(domId + "-iframe").contentDocument;
doc.body.focus();
doc.execCommand("superscript");
},
removeFormat: (e, domId) => {
let doc = document.getElementById(domId + "-iframe").contentDocument;
doc.body.focus();
doc.execCommand("removeFormat");
},
selectAll: (e, domId) => {
let doc = document.getElementById(domId + "-iframe").contentDocument;
doc.body.focus();
doc.execCommand("selectAll");
},
doHeading: (e, domId) => {
e.target.style.position = "relative";
let div = `
标题1
标题2
标题3
标题4
正文
`;
e.target.innerHTML = div;
let doc = document.getElementById(domId + "-iframe").contentDocument;
doc.onclick = (e) => {
let self = document.getElementById(`${domId}clickRemove`);
if (self) {
self.parentElement.removeChild(self);
}
};
document.body.onclick = (e) => {
if (e.target.dataset.type !== "doHeading") {
if (e.target.id === `${domId}doHeadingH1`) {
doc.body.focus();
doc.execCommand("formatBlock", false, "h1");
} else if (e.target.id === `${domId}doHeadingH2`) {
doc.body.focus();
doc.execCommand("formatBlock", false, "h2");
} else if (e.target.id === `${domId}doHeadingH3`) {
doc.body.focus();
doc.execCommand("formatBlock", false, "h3");
} else if (e.target.id === `${domId}doHeadingH4`) {
doc.body.focus();
doc.execCommand("formatBlock", false, "h4");
} else if (e.target.id === `${domId}doHeadingH0`) {
doc.body.focus();
doc.execCommand("formatBlock", false, "p");
}
let self = document.getElementById(`${domId}clickRemove`);
if (self) {
self.parentElement.removeChild(self);
}
}
};
},
fontName: (e, domId) => {
let mySelf = document.getElementById(`${domId}clickRemove`);
if (mySelf) {
mySelf.parentElement.removeChild(mySelf);
}
e.target.style.position = "relative";
let div = `
宋体
新宋体
黑体
微软雅黑
微软正黑体
新细明体
细明体
标楷体
仿宋
楷体
隶书
幼圆
方正舒体
方正姚体
华文彩云
华文琥珀
华文新魏
华文行楷
Arial
Brush Script MT
Courier New
Lucida Handwriting
Papyrus
Times New Roman
`;
e.target.innerHTML = div;
let doc = document.getElementById(domId + "-iframe").contentDocument;
doc.onclick = (e) => {
let self = document.getElementById(`${domId}clickRemove`);
if (self) {
self.parentElement.removeChild(self);
}
};
document.body.onclick = (e) => {
e.stopPropagation();
if (e.target.dataset.type !== "fontName") {
let id = e.target.id;
let index = id.indexOf(`${domId}fontName`);
if (index === 0) {
let newId = id.replace(`${domId}fontName`, "");
let filed = newId.replace("__", "");
doc.body.focus();
doc.execCommand("fontName", false, filed);
}
let self = document.getElementById(`${domId}clickRemove`);
if (self) {
self.parentElement.removeChild(self);
}
}
};
},
fontSize: (e, domId) => {
let mySelf = document.getElementById(`${domId}clickRemove`);
if (mySelf) {
mySelf.parentElement.removeChild(mySelf);
}
e.target.style.position = "relative";
let div = `
12px
14px
16px
18px
20px
24px
28px
32px
42px
60px
72px
`;
e.target.innerHTML = div;
let doc = document.getElementById(domId + "-iframe").contentDocument;
let win = document.getElementById(domId + "-iframe").contentWindow;
doc.onclick = (e) => {
let self = document.getElementById(`${domId}clickRemove`);
if (self) {
self.parentElement.removeChild(self);
}
};
document.body.onclick = (e) => {
e.stopPropagation();
if (e.target.dataset.type !== "fontSize") {
let id = e.target.id;
let index = id.indexOf(`${domId}fontSize`);
if (index === 0) {
let newId = id.replace(`${domId}fontSize`, "");
doc.body.focus();
doc.execCommand("fontSize", false, 3);
let spanList = doc.getElementsByTagName("span");
let aList = doc.getElementsByTagName("a");
//let uList = doc.getElementsByTagName("u");
// let strikeList = doc.getElementsByTagName("strike");
let list = [...spanList, ...aList];
for (let i = 0; i < list.length; i++) {
let size = list[i].style.fontSize;
if (size === "medium") {
list[i].style.fontSize = newId + "px";
list[i].style.zIndex = "891314";
list[i].id = Date.now();
}
}
}
let self = document.getElementById(`${domId}clickRemove`);
if (self) {
self.parentElement.removeChild(self);
}
}
};
},
foreColor: (e, domId) => {
let mySelf = document.getElementById(`${domId}clickRemove`);
if (mySelf) {
mySelf.parentElement.removeChild(mySelf);
}
e.target.style.position = "relative";
let div = `
恢复默认
`;
e.target.innerHTML = div;
let doc = document.getElementById(domId + "-iframe").contentDocument;
let win = document.getElementById(domId + "-iframe").contentWindow;
doc.onclick = (e) => {
let self = document.getElementById(`${domId}clickRemove`);
if (self) {
self.parentElement.removeChild(self);
}
};
document.body.onclick = (e) => {
e.stopPropagation();
if (e.target.dataset.type !== "foreColor") {
let id = e.target.id;
let index = id.indexOf(`${domId}foreColor`);
if (index === 0) {
let newId = id.replace(`${domId}foreColor`, "");
let filed = newId.replace("__", "");
doc.body.focus();
doc.execCommand("foreColor", false, "#" + filed);
}
let self = document.getElementById(`${domId}clickRemove`);
if (self) {
self.parentElement.removeChild(self);
}
}
};
},
hiliteColor: (e, domId) => {
let mySelf = document.getElementById(`${domId}clickRemove`);
if (mySelf) {
mySelf.parentElement.removeChild(mySelf);
}
e.target.style.position = "relative";
let div = `
无颜色
`;
e.target.innerHTML = div;
let doc = document.getElementById(domId + "-iframe").contentDocument;
//let win = document.getElementById(domId + "-iframe").contentWindow;
doc.onclick = (e) => {
let self = document.getElementById(`${domId}clickRemove`);
if (self) {
self.parentElement.removeChild(self);
}
};
document.body.onclick = (e) => {
e.stopPropagation();
if (e.target.dataset.type !== "hiliteColor") {
let id = e.target.id;
let index = id.indexOf(`${domId}hiliteColor`);
if (index === 0) {
let newId = id.replace(`${domId}hiliteColor`, "");
let filed = newId.replace("__", "");
doc.body.focus();
if (filed == "transparent") {
doc.execCommand("hiliteColor", false, "transparent");
} else {
doc.execCommand("hiliteColor", false, "#" + filed);
}
}
let self = document.getElementById(`${domId}clickRemove`);
if (self) {
self.parentElement.removeChild(self);
}
}
};
},
doBold: (e, domId) => {
let doc = document.getElementById(domId + "-iframe").contentDocument;
doc.body.focus();
doc.execCommand("bold");
},
doItalic: (e, domId) => {
let doc = document.getElementById(domId + "-iframe").contentDocument;
doc.body.focus();
doc.execCommand("italic");
},
doUnderline: (e, domId) => {
let doc = document.getElementById(domId + "-iframe").contentDocument;
doc.body.focus();
// doc.execCommand("styleWithCSS", null, false);
doc.execCommand("underline");
// doc.execCommand("styleWithCSS", null, true);
return;
//为了doLineHeight,"891314"
let aList = doc.getElementsByTagName("a");
let spanList = doc.getElementsByTagName("span");
let list = [...aList, ...spanList];
for (let i = 0; i < list.length; i++) {
let textDecorationLine = list[i].style.textDecorationLine;
let zIndex = list[i].style.zIndex;
if (textDecorationLine.indexOf("underline") > -1) {
list[i].style.zIndex = "891314";
} else if (zIndex === "891314") {
//删除的下划线
list[i].style.zIndex = "";
}
}
},
strikeThrough: (e, domId) => {
let doc = document.getElementById(domId + "-iframe").contentDocument;
doc.body.focus();
// doc.execCommand("styleWithCSS", null, false);
doc.execCommand("strikeThrough"); //del标签最好
// doc.execCommand("styleWithCSS", null, true);
return;
for (let i = 0; i < list.length; i++) {
let textDecorationLine = list[i].style.textDecorationLine;
console.log("textDecorationLine", textDecorationLine);
let delList = list[i].getElementsByTagName("del");
let delText = "";
let text = list[i].innerText;
console.log(delList, text, delText);
for (let j = 0; j < delList.length; j++) {
delText += delList[j].innerText;
}
let html = list[i].innerHTML;
if (textDecorationLine.indexOf("line-through") > -1) {
list[i].style.textDecorationLine = "";
html = html.replace(//g, "");
html = html.replace(/<\/del>/g, "");
if (text !== delText) {
html = "" + html + "";
}
list[i].innerHTML = html;
} else if (text === delText) {
html = html.replace(//g, "");
html = html.replace(/<\/del>/g, "");
list[i].innerHTML = html;
}
}
},
createLink: (e, domId) => {
let doc = document.getElementById(domId + "-iframe").contentDocument;
let win = document.getElementById(domId + "-iframe").contentWindow;
let html = null,
initUrl = "",
initType = "_blank";
if (win.getSelection) {
//一般浏览器
let dom = win.getSelection().getRangeAt(0).cloneContents();
let div1 = document.createElement("div");
document.body.appendChild(div1);
div1.appendChild(dom);
let aaaPar = win.getSelection().anchorNode.parentElement;
while (
aaaPar.tagName !== "A" &&
aaaPar.tagName !== "BODY" &&
aaaPar.tagName !== "HTML"
) {
aaaPar = aaaPar.parentElement;
}
let href = aaaPar.href;
let type = aaaPar.target;
if (href !== undefined) {
initUrl = href;
}
if (type === "_self") {
initType = "_self";
}
html = div1.innerHTML;
document.body.removeChild(div1);
} else if (doc.selection) {
//IE浏览器、Opera
html = doc.selection.createRange().htmlText;
}
if (html === undefined || html === "") {
return;
}
let ele = `
`;
let div = document.createElement("div");
div.id = `${domId}createLink`;
div.style.cssText =
"width:100%;height:100%;position:fixed;top:0;left:0;z-index:999999;background:rgba(255,255,255,0.6);";
document.body.appendChild(div);
div.innerHTML = ele;
document.getElementById(`${domId}linkType`).value = initType;
document.getElementById(`${domId}linkUrlConfirm`).onclick = (e) => {
let val = document.getElementById(`${domId}linkUrl`).value;
if (val === "") {
alert("请输入URL");
return;
}
let type = document.getElementById(`${domId}linkType`).value;
doc.body.focus();
doc.execCommand("createLink", false, val);
document.body.removeChild(div);
let list = doc.getElementsByTagName("a");
for (let i = 0; i < list.length; i++) {
let target = list[i].target;
if (target === "" && list[i].href !== "") {
list[i].target = type;
}
}
// let html2 = null;
// if (win.getSelection) {
// //一般浏览器
// let dom2 = win.getSelection().getRangeAt(0).cloneContents(); //win.getSelection().anchorNode.parentElement
// let div2 = document.createElement("div");
// document.body.appendChild(div2);
// div2.appendChild(dom2);
// html2 = div2.innerHTML;
// document.body.removeChild(div2);
// } else if (doc.selection) {
// //IE浏览器、Opera
// html2 = doc.selection.createRange().htmlText;
// }
// if (html2 === undefined) {
// return;
// }
// html2 = html2.replace(/ {
document.body.removeChild(div);
};
},
unlink: (e, domId) => {
let doc = document.getElementById(domId + "-iframe").contentDocument;
doc.body.focus();
doc.execCommand("unlink");
},
anchorPoint: (e, domId) => {
let doc = document.getElementById(domId + "-iframe").contentDocument;
let win = document.getElementById(domId + "-iframe").contentWindow;
let html = null,
initUrl = "";
if (win.getSelection) {
//一般浏览器
let dom = win.getSelection().getRangeAt(0).cloneContents();
let div1 = document.createElement("div");
document.body.appendChild(div1);
div1.appendChild(dom);
let aaaPar = win.getSelection().anchorNode.parentElement;
while (
aaaPar.tagName !== "A" &&
aaaPar.tagName !== "BODY" &&
aaaPar.tagName !== "HTML"
) {
aaaPar = aaaPar.parentElement;
}
let name = aaaPar.name;
if (name !== undefined) {
initUrl = name;
}
html = div1.innerHTML;
document.body.removeChild(div1);
} else if (doc.selection) {
//IE浏览器、Opera
html = doc.selection.createRange().htmlText;
}
if (html === undefined || html === "") {
return;
}
let ele = `
`;
let div = document.createElement("div");
div.id = `${domId}anchorPoint`;
div.style.cssText =
"width:100%;height:100%;position:fixed;top:0;left:0;z-index:999999;background:rgba(255,255,255,0.6);";
document.body.appendChild(div);
div.innerHTML = ele;
document.getElementById(`${domId}anchorPointConfirm`).onclick = (e) => {
let val = document.getElementById(`${domId}anchorPointName`).value;
if (val === "") {
alert("请输入锚点名称");
return;
}
doc.body.focus();
doc.execCommand("createLink", false, domId + "javascript:;");
// let dom = win.getSelection().getRangeAt(0).cloneContents();
//range.extractContents().textContent获取的是选区中纯文本内容,range.deleteContents()删除选取内容,
//range.insertNode(span)插入加有行距的内容
// let dom2 = win.getSelection().anchorNode.parentElement;
//win.getSelection().toString()
let list = doc.getElementsByTagName("a");
for (let i = 0; i < list.length; i++) {
let href = list[i].href;
if (href === domId + "javascript:;") {
list[i].removeAttribute("href");
list[i].name = val;
//list[i].style.cssText = "border:1px solid #1989fa;border-radius:4px;";
}
}
document.body.removeChild(div);
};
document.getElementById(`${domId}anchorPointCancel`).onclick = (e) => {
document.body.removeChild(div);
};
},
insertHorizontalRule: (e, domId) => {
let doc = document.getElementById(domId + "-iframe").contentDocument;
doc.body.focus();
doc.execCommand("insertHorizontalRule");
},
insertHorizontalRuleDashed: (e, domId) => {
let doc = document.getElementById(domId + "-iframe").contentDocument;
doc.body.focus();
let html = `
`;
doc.execCommand("insertHTML", false, html);
},
doLineHeight: (e, domId) => {
let mySelf = document.getElementById(`${domId}clickRemove`);
if (mySelf) {
mySelf.parentElement.removeChild(mySelf);
}
let doc = document.getElementById(domId + "-iframe").contentDocument;
let win = document.getElementById(domId + "-iframe").contentWindow;
// 获取当前的选区
let html = null;
if (win.getSelection) {
//一般浏览器
let dom = win.getSelection().getRangeAt(0).cloneContents();
let div1 = document.createElement("div");
document.body.appendChild(div1);
div1.appendChild(dom);
html = div1.innerHTML;
document.body.removeChild(div1);
} else if (doc.selection) {
//IE浏览器、Opera
html = doc.selection.createRange().htmlText;
}
if (html === undefined || html === "") {
return;
}
e.target.style.position = "relative";
let div = `
单倍行距
1.2倍行距
1.5倍行距
1.8倍行距
2倍行距
`;
e.target.innerHTML = div;
doc.onclick = (e) => {
let self = document.getElementById(`${domId}clickRemove`);
if (self) {
self.parentElement.removeChild(self);
}
};
document.body.onclick = (e) => {
e.stopPropagation();
if (e.target.dataset.type !== "doLineHeight") {
let id = e.target.id;
let index = id.indexOf(`${domId}doLineHeight`);
if (index === 0) {
let newId = id.replace(`${domId}doLineHeight`, "");
let value = newId / 10;
doc.body.focus();
let spanList0 = doc.getElementsByTagName("span");
let aList0 = doc.getElementsByTagName("a");
let list0 = [...spanList0, ...aList0].filter((item) => {
return item.style.zIndex === "891314";
});
let objId = {};
for (let i = 0; i < list0.length; i++) {
let id = list0[i].id;
objId[id] = list0[i].style.fontSize;
}
doc.execCommand("fontSize", false, 3);
let spanList = doc.getElementsByTagName("span");
let aList = doc.getElementsByTagName("a");
let list = [...spanList, ...aList];
for (let i = 0; i < list.length; i++) {
let size = list[i].style.fontSize;
let zIndex = list[i].style.zIndex;
if (size === "medium") {
list[i].style.fontSize = "";
list[i].style.lineHeight = value;
}
if (zIndex === "891314") {
let id = list[i].id;
list[i].style.fontSize = objId[id];
}
}
}
let self = document.getElementById(`${domId}clickRemove`);
if (self) {
self.parentElement.removeChild(self);
}
}
};
return;
// let range = selection.getRangeAt(0);
// // 选中区域的html
// let outSpan = document.createElement("span");
// outSpan.style.cssText = "line-height: " + value + ";display: inline-block;";
// outSpan.appendChild(range.cloneContents());
// // 设置指定行距
// function setLineHeight(content, value) {
// let reg = /line-height\s*:\s*(\d+(\.*\d+)?)/gi;
// let c = content.replace(reg, "line-height: " + value);
// return c;
// }
// let content = setLineHeight(outSpan.innerHTML, value);
// // 选取中的纯文本
// let txt = range.extractContents().textContent;
// let length = txt.length;
// if (length === 0) {
// return;
// }
// // 删除被选择的内容
// range.deleteContents();
// // 创建新的元素
// let span = document.createElement("span");
// span.style.cssText = "line-height: " + value + ";display: inline-block;";
// // 设置 span 内容
// span.innerHTML = content;
// // 在被选择的位置设置行距的元素
// range.insertNode(span);
},
doTable: (e, domId) => {
let doc = document.getElementById(domId + "-iframe").contentDocument;
//let win = document.getElementById(domId + "-iframe").contentWindow;
let ele = `
`;
let div = document.createElement("div");
div.id = `${domId}doTable`;
div.style.cssText =
"width:100%;height:100%;position:fixed;top:0;left:0;z-index:999999;background:rgba(255,255,255,0.6);";
document.body.appendChild(div);
div.innerHTML = ele;
document.getElementById(`${domId}doTableWidthType`).value = "%";
document.getElementById(`${domId}doTableHeightType`).value = "%";
document.getElementById(`${domId}doTableAlignType`).value = "";
document.getElementById(`${domId}doTableConfirm`).onclick = (e) => {
let rowNum = document.getElementById(`${domId}doTableRow`).value;
let colNum = document.getElementById(`${domId}doTableCol`).value;
let tWidth = document.getElementById(`${domId}doTableWidth`).value;
let tWidthType = document.getElementById(
`${domId}doTableWidthType`
).value;
let tHeight = document.getElementById(`${domId}doTableHeight`).value;
let tHeightType = document.getElementById(
`${domId}doTableHeightType`
).value;
let paddNum = document.getElementById(`${domId}doTablePadding`).value;
let spacNum = document.getElementById(`${domId}doTableSpacing`).value;
let alignType = document.getElementById(`${domId}doTableAlignType`).value;
let borderNum = document.getElementById(
`${domId}doTableBorderWidth`
).value;
let borderColor = "";
let checkVal1 = document
.getElementById(`${domId}doTableBorder`)
.querySelectorAll("input[name='borderRadio']:checked")[0].value;
if (checkVal1 === "1") {
borderColor = document.getElementById(
`${domId}doTableBorderColor`
).value;
}
let backgroundColor = "";
let checkVal2 = document
.getElementById(`${domId}doTableBackground`)
.querySelectorAll("input[name='backRadio']:checked")[0].value;
if (checkVal2 === "1") {
backgroundColor = document.getElementById(
`${domId}doTableBackgroundColor`
).value;
}
if (!/^[1-9][0-9]{0,}$/.test(rowNum)) {
alert("行数请输入大于0的整数");
return;
} else if (!/^[1-9][0-9]{0,}$/.test(colNum)) {
alert("列数请输入大于0的整数");
return;
} else if (!/^[0-9]{0,}$/.test(tWidth) && tWidth !== "") {
alert("宽度请输入数字");
return;
} else if (!/^[0-9]{0,}$/.test(tHeight) && tHeight !== "") {
alert("高度请输入数字");
return;
} else if (!/^[0-9]{0,}$/.test(paddNum) && paddNum !== "") {
alert("边距请输入数字");
return;
} else if (!/^[0-9]{0,}$/.test(spacNum) && spacNum !== "") {
alert("间距请输入数字");
return;
} else if (!/^[0-9]{0,}$/.test(borderNum) && borderNum !== "") {
alert("边框请输入数字");
return;
}
let html = ``;
html += "";
for (let i = 0; i < rowNum; i++) {
html += "";
for (let col = 0; col < colNum; col++) {
html += "
| ";
}
html += "
";
}
html += "";
html += "
";
html += "
";
doc.body.focus();
doc.execCommand("insertHTML", false, html);
document.body.removeChild(div);
};
document.getElementById(`${domId}doTableCancel`).onclick = (e) => {
document.body.removeChild(div);
};
},
insertImage: (e, domId) => {
let doc = document.getElementById(domId + "-iframe").contentDocument;
//let win = document.getElementById(domId + "-iframe").contentWindow;
//accept="image/gif, image/jpeg"
let ele = `
`;
let div = document.createElement("div");
div.id = `${domId}insertImage`;
div.style.cssText =
"width:100%;height:100%;position:fixed;top:0;left:0;z-index:999999;background:rgba(255,255,255,0.6);";
document.body.appendChild(div);
div.innerHTML = ele;
let imgBase64 = "";
document.getElementById(`${domId}insertImageFile`).onchange = (el) => {
if (el.currentTarget.files.length === 0) {
return;
}
let reader = new FileReader();
reader.onload = (e) => {
imgBase64 = reader.result;
};
reader.readAsDataURL(el.target.files[0]);
//获取图片大小,字节
let fileMsg = el.currentTarget.files[0];
let fileType = fileMsg.type;
if (fileType.indexOf("image/") !== 0) {
alert("请上传图片!");
document.getElementById(`${domId}insertImageFile`).value = ""; //文件
}
// let fileSize = fileMsg.size;//不能超过2668484,大约为2.6MB
// if (fileSize > 2668484) {
// alert("选择的图像文件不能超过2.6MB,请重新选择!");
// document.getElementById(`${domId}insertImageFile`).value=""; //文件
// }
};
document.getElementById(`${domId}insertImageConfirm`).onclick = (e) => {
let val = document.getElementById(`${domId}insertImageFile`).value;
if (val === "") {
alert("请上传图片");
return;
}
doc.body.focus();
doc.execCommand("insertImage", false, imgBase64);
document.body.removeChild(div);
let imgList = doc.getElementsByTagName("img");
for (let i = 0; i < imgList.length; i++) {
imgList[i].style.objectFit = "contain";
imgList[i].style.maxWidth = "100%";
}
};
document.getElementById(`${domId}insertImageCancel`).onclick = (e) => {
document.body.removeChild(div);
};
},
setType: (e, domId) => {
let doc = document.getElementById(domId + "-iframe").contentDocument;
doc.body.focus();
//doc.execCommand("enableInlineTableEditing");
},
};
export default headerClickFun;