153 lines
5.8 KiB
JavaScript
153 lines
5.8 KiB
JavaScript
"use strict";
|
||
/**
|
||
* 拷贝事件
|
||
*/
|
||
define(function (require, exports, module) {
|
||
|
||
function handle(e) {
|
||
const utils = require("../../common/utils");
|
||
let event = utils.ParseEvent(e);
|
||
let target = utils.GetEventTarget(event);
|
||
console.log("target: ", target, target.tagName)
|
||
if (target.tagName === "SPAN") {
|
||
target = target.parentElement;
|
||
console.log("cur_target: ", target, target.tagName)
|
||
}
|
||
if (target.tagName === "LI") {
|
||
let curLi = target;
|
||
//处理 下拉选择/取消选择
|
||
let myParent = curLi.parentElement;
|
||
let dataMySelectV = myParent.getAttribute("data-my-select-v");
|
||
let liList = myParent.querySelectorAll("li");
|
||
for (let i = 0; i < liList.length; i++) {
|
||
let tmpLi = liList[i];
|
||
if (tmpLi.textContent === curLi.textContent) {
|
||
tmpLi.setAttribute("data-my-select", "true");
|
||
tmpLi.setAttribute("data-my-select-v", dataMySelectV);
|
||
tmpLi.style.setProperty("background-color", "#f0f0f0");
|
||
continue;
|
||
}
|
||
|
||
tmpLi.setAttribute("data-my-select", "false");
|
||
tmpLi.removeAttribute("data-my-select-v");
|
||
tmpLi.style.removeProperty("background-color");
|
||
}
|
||
|
||
|
||
//refreshPFontSize ; refreshEditFrontSize ; refreshEditColor ; refreshEditBgColor; other
|
||
let dataMyStyleType = myParent.getAttribute("data-my-style-type");
|
||
switch (dataMyStyleType) {
|
||
case "refreshPFontSize":
|
||
refreshPFontSize(target);
|
||
break;
|
||
case "refreshEditFrontSize":
|
||
refreshEditFrontSize(target);
|
||
break;
|
||
case "refreshEditColor":
|
||
refreshEditColor(target);
|
||
break
|
||
case "refreshEditBgColor":
|
||
refreshEditBgColor(target);
|
||
break
|
||
default :
|
||
console.log("暂时不支持")
|
||
break
|
||
}
|
||
}
|
||
}
|
||
|
||
function refreshEditColor(curLi) {
|
||
const ctx = require("../../common/ctx");
|
||
const utils = require("../../common/utils");
|
||
let select = utils.GetSelection();
|
||
let curP = select.anchorNode.parentElement.closest("p");
|
||
let dataMySelectK = curLi.getAttribute("data-my-style-k");
|
||
let dataMySelectV = curLi.getAttribute("data-my-style-v");
|
||
|
||
let tSpan = curLi.parentElement.parentElement.previousElementSibling;
|
||
console.log("refreshEditColor ", dataMySelectK, dataMySelectV, tSpan, tSpan.getAttribute("data-v"))
|
||
|
||
tSpan.setAttribute("data-v", dataMySelectV)
|
||
|
||
}
|
||
|
||
function refreshEditBgColor(curLi) {
|
||
const ctx = require("../../common/ctx");
|
||
const utils = require("../../common/utils");
|
||
let select = utils.GetSelection();
|
||
let curP = select.anchorNode.parentElement.closest("p");
|
||
let dataMySelectK = curLi.getAttribute("data-my-style-k");
|
||
let dataMySelectV = curLi.getAttribute("data-my-style-v");
|
||
|
||
let tSpan = curLi.parentElement.parentElement.previousElementSibling;
|
||
console.log("refreshEditBgColor ", dataMySelectK, dataMySelectV, tSpan, tSpan.getAttribute("data-v"))
|
||
|
||
tSpan.setAttribute("data-v", dataMySelectV)
|
||
}
|
||
|
||
function refreshPFontSize(curLi) {
|
||
const ctx = require("../../common/ctx");
|
||
const utils = require("../../common/utils");
|
||
let select = utils.GetSelection();
|
||
let curP = select.anchorNode.parentElement.closest("p");
|
||
let dataMySelectK = curLi.getAttribute("data-my-style-k");
|
||
let dataMySelectV = curLi.getAttribute("data-my-style-v");
|
||
|
||
let kList = dataMySelectK.toString().split(",");
|
||
let vList = dataMySelectV.toString().split(",");
|
||
let total = kList.length;
|
||
let num = 0;
|
||
for (let i = 0; i < kList.length; i++) {
|
||
if (curP.style.getPropertyValue(kList[i]) === vList[i]) {
|
||
num++;
|
||
}
|
||
|
||
if (vList[i] === "defaultFontSize") {
|
||
let myEditFrontSize = document.getElementById("myEdit_main");
|
||
curP.style.setProperty(kList[i], myEditFrontSize.style.fontSize);
|
||
} else {
|
||
curP.style.setProperty(kList[i], vList[i]);
|
||
}
|
||
|
||
}
|
||
|
||
//移除
|
||
if (total === num) {
|
||
for (let j = 0; j < kList.length; j++) {
|
||
curP.style.removeProperty(kList[j]);
|
||
}
|
||
}
|
||
}
|
||
|
||
function refreshEditFrontSize(curLi) {
|
||
const ctx = require("../../common/ctx");
|
||
const utils = require("../../common/utils");
|
||
let curStyleV = curLi.getAttribute("data-my-style-v");
|
||
//设置当前的尺寸
|
||
ctx.editFrontSize = curStyleV;
|
||
let curClientW = ctx.getScreenWidth();
|
||
if (!curClientW) {
|
||
return
|
||
}
|
||
//字体尺寸 https://www.shejidaren.com/zihao-daxiao-sheji-bilv.html
|
||
//12~72 px 建议最大字体是48px
|
||
let dpr = utils.GetDpr();
|
||
let myEditFrontSize = document.getElementById("myEdit_main");
|
||
if (ctx.isTablet) {
|
||
myEditFrontSize.style.fontSize = ctx.editFrontSize * dpr + 'px';
|
||
} else {
|
||
myEditFrontSize.style.fontSize = ctx.editFrontSize + 'px';
|
||
}
|
||
|
||
console.log("refreshEditFrontSize ", curLi, curStyleV,
|
||
"\nctx.editFrontSize: ", ctx.editFrontSize)
|
||
|
||
//保存在本地 refreshEditFrontSize
|
||
localStorage.setItem('refreshEditFrontSize', ctx.editFrontSize);
|
||
//show
|
||
document.getElementById("cur_my_font_size").textContent = ctx.editFrontSize + "px"
|
||
}
|
||
|
||
//导出
|
||
exports.handle = handle;
|
||
}); |