| New file |
| | |
| | | /** |
| | | * 遍历对象 |
| | | * |
| | | * @param {Object} obj |
| | | * @param {Object} fn |
| | | */ |
| | | export function objForEach(obj, fn) { |
| | | let key = void 0, |
| | | result = void 0 |
| | | for (key in obj) { |
| | | if (obj.hasOwnProperty(key)) { |
| | | result = fn.call(obj, key, obj[key]) |
| | | if (result === false) { |
| | | break |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 遍历类数组 |
| | | * |
| | | * @param {Object} fakeArr |
| | | * @param {Object} fn |
| | | */ |
| | | export function arrForEach(fakeArr, fn) { |
| | | let i = void 0, |
| | | item = void 0, |
| | | result = void 0 |
| | | let length = fakeArr.length || 0 |
| | | for (i = 0; i < length; i++) { |
| | | item = fakeArr[i] |
| | | result = fn.call(fakeArr, item, i) |
| | | if (result === false) { |
| | | break |
| | | } |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 替换 html 特殊字符 |
| | | * |
| | | * @param {Object} html |
| | | */ |
| | | export function replaceHtmlSymbol(html) { |
| | | if (html == null) { |
| | | return '' |
| | | } |
| | | return html |
| | | .replace(/</gm, '<') |
| | | .replace(/>/gm, '>') |
| | | .replace(/"/gm, '"') |
| | | .replace(/(\r\n|\r|\n)/g, '<br/>') |
| | | } |
| | | |
| | | /** |
| | | * 获取粘贴的纯文本 |
| | | * |
| | | * @param {Object} e |
| | | */ |
| | | export function getPasteText(e) { |
| | | let clipboardData = |
| | | e.clipboardData || (e.originalEvent && e.originalEvent.clipboardData) |
| | | let pasteText = void 0 |
| | | if (clipboardData == null) { |
| | | pasteText = window.clipboardData && window.clipboardData.getData('text') |
| | | } else { |
| | | pasteText = clipboardData.getData('text/plain') |
| | | } |
| | | |
| | | return replaceHtmlSymbol(pasteText) |
| | | } |
| | | |
| | | /** |
| | | * 获取粘贴的html |
| | | * |
| | | * @param {Object} e |
| | | * @param {Object} filterStyle |
| | | * @param {Object} ignoreImg |
| | | */ |
| | | export function getPasteHtml(e, filterStyle, ignoreImg) { |
| | | let clipboardData = |
| | | e.clipboardData || (e.originalEvent && e.originalEvent.clipboardData) |
| | | let pasteText = void 0, |
| | | pasteHtml = void 0 |
| | | if (clipboardData == null) { |
| | | pasteText = window.clipboardData && window.clipboardData.getData('text') |
| | | } else { |
| | | pasteText = clipboardData.getData('text/plain') |
| | | pasteHtml = clipboardData.getData('text/html') |
| | | } |
| | | if (!pasteHtml && pasteText) { |
| | | pasteHtml = '<p>' + replaceHtmlSymbol(pasteText) + '</p>' |
| | | } |
| | | if (!pasteHtml) { |
| | | return |
| | | } |
| | | |
| | | // 过滤word中状态过来的无用字符 |
| | | let docSplitHtml = pasteHtml.split('</html>') |
| | | if (docSplitHtml.length === 2) { |
| | | pasteHtml = docSplitHtml[0] |
| | | } |
| | | |
| | | // 过滤无用标签 |
| | | pasteHtml = pasteHtml.replace(/<(meta|script|link).+?>/gim, '') |
| | | // 去掉注释 |
| | | pasteHtml = pasteHtml.replace(/<!--.*?-->/gm, '') |
| | | // 过滤 data-xxx 属性 |
| | | pasteHtml = pasteHtml.replace(/\s?data-.+?=('|").+?('|")/gim, '') |
| | | |
| | | if (ignoreImg) { |
| | | // 忽略图片 |
| | | pasteHtml = pasteHtml.replace(/<img.+?>/gim, '') |
| | | } |
| | | |
| | | if (filterStyle) { |
| | | // 过滤样式 |
| | | pasteHtml = pasteHtml.replace(/\s?(class|style)=('|").*?('|")/gim, '') |
| | | } else { |
| | | // 保留样式 |
| | | pasteHtml = pasteHtml.replace(/\s?class=('|").*?('|")/gim, '') |
| | | } |
| | | |
| | | return pasteHtml |
| | | } |
| | | |
| | | /** |
| | | * 获取粘贴的图片文件 |
| | | * |
| | | * @param {Object} e |
| | | */ |
| | | export function getPasteImgs(e) { |
| | | let result = [] |
| | | let txt = getPasteText(e) |
| | | if (txt) { |
| | | // 有文字,就忽略图片 |
| | | return result |
| | | } |
| | | |
| | | let clipboardData = |
| | | e.clipboardData || (e.originalEvent && e.originalEvent.clipboardData) || {} |
| | | let items = clipboardData.items |
| | | if (!items) { |
| | | return result |
| | | } |
| | | |
| | | objForEach(items, function(key, value) { |
| | | let type = value.type |
| | | if (/image/i.test(type)) { |
| | | result.push(value.getAsFile()) |
| | | } |
| | | }) |
| | | |
| | | return result |
| | | } |
| | | |
| | | /** |
| | | * 获取拖拽的图片 |
| | | * |
| | | * @param {Object} e |
| | | */ |
| | | export function getDragPasteImg(e) { |
| | | let result = [] |
| | | let dataTransfer = |
| | | e.dataTransfer || (e.originalEvent && e.originalEvent.dataTransfer) || {} |
| | | let items = dataTransfer.items |
| | | if (!items) { |
| | | return result |
| | | } |
| | | |
| | | objForEach(items, function(key, value) { |
| | | let type = value.type |
| | | if (/image/i.test(type)) { |
| | | result.push(value.getAsFile()) |
| | | } |
| | | }) |
| | | |
| | | return result |
| | | } |