|
@@ -1,6 +1,6 @@
|
|
|
<template>
|
|
|
<div>
|
|
|
- <div class="edit-box div_MAX_Height" contenteditable="true" :placeholder="placeholder" v-html="content" :key="keys" :id="keys"
|
|
|
+ <div class="edit-box div_MAX_Height" ref="myEditBox" contenteditable="true" :placeholder="placeholder" v-html="content" :key="keys" :id="keys"
|
|
|
@blur="saveValue($event)" @click="getFocus($event)" v-on:paste="handlePaste($event)">
|
|
|
</div>
|
|
|
</div>
|
|
@@ -69,6 +69,19 @@ export default {
|
|
|
this.setCursor(event,text2,1)
|
|
|
break;
|
|
|
}
|
|
|
+ // if(items[i].type.indexOf("text/html") !== -1){
|
|
|
+ // var string = (event.originalEvent || event).clipboardData.getData('text/html')
|
|
|
+
|
|
|
+ // const srcRegex = /<img\s+(?:[^>]*?\s+)?src\s*=\s*(["'])((?:[^\1"]|\\\1|.)*?)\1/g
|
|
|
+ // const result = [...string.matchAll(srcRegex)]
|
|
|
+ // var src = result.map(v => v[2])[0]
|
|
|
+ // console.log(src)
|
|
|
+ // var reader = new FileReader()
|
|
|
+ // var srcBase64 = reader.readAsDataURL(src)
|
|
|
+ // // var srcBase64 =await this.urlToBase64(src)
|
|
|
+ // console.log(srcBase64)
|
|
|
+ // continue;
|
|
|
+ // }
|
|
|
if (items[i].type.indexOf("image") !== -1) {
|
|
|
var e = event || window.event
|
|
|
e.preventDefault();
|
|
@@ -130,8 +143,37 @@ export default {
|
|
|
// console.log(window.getSelection().getRangeAt(0))
|
|
|
|
|
|
},
|
|
|
+ /**
|
|
|
+ * 根据图片的url转换对应的base64值
|
|
|
+ * @param { String } imageUrl 如:http://xxxx/xxx.png
|
|
|
+ * @returns base64取值
|
|
|
+ */
|
|
|
+async urlToBase64(imageUrl) {
|
|
|
+ return new Promise((resolve, reject) => {
|
|
|
+ let canvas = document.createElement('canvas')
|
|
|
+ const ctx = canvas.getContext('2d')
|
|
|
+ let img = new Image()
|
|
|
+ img.crossOrigin = 'Anonymous' // 解决Canvas.toDataURL 图片跨域问题
|
|
|
+ img.src = imageUrl
|
|
|
+ img.onload = function() {
|
|
|
+ canvas.height = img.height
|
|
|
+ canvas.width = img.width
|
|
|
+ ctx.fillStyle = '#fff' // canvas背景填充颜色默认为黑色
|
|
|
+ // ctx.fillRect(0,0,img.width,img.height)
|
|
|
+ ctx.drawImage(img, 0, 0,img.width,img.height) // 参数可自定义
|
|
|
+ const dataURL = canvas.toDataURL('image/jpeg', 1) // 获取Base64编码
|
|
|
+ resolve(dataURL)
|
|
|
+ canvas = null // 清除canvas元素
|
|
|
+ img = null // 清除img元素
|
|
|
+ }
|
|
|
+ img.onerror = function() {
|
|
|
+ reject(new Error('Could not load image at ' + imageUrl))
|
|
|
+ }
|
|
|
+ })
|
|
|
+},
|
|
|
//设置光标位置
|
|
|
setCursor(event,str,type){
|
|
|
+ console.log(event)
|
|
|
var content = event.target.innerHTML
|
|
|
// previousSibling
|
|
|
var indexText = this.getColumn(event.target,window.getSelection())
|
|
@@ -139,7 +181,9 @@ export default {
|
|
|
var childNodes = event.target.childNodes
|
|
|
if(!content){
|
|
|
if(event.target.nodeName == 'BR'){
|
|
|
- event.target.parentNode.innerHTML = str
|
|
|
+ const span = document.createElement('span');
|
|
|
+ span.innerHTML = str;
|
|
|
+ event.target.parentNode.insertBefore(span,event.target)
|
|
|
var selectedRange = document.createRange();
|
|
|
selectedRange.setStart(event.target,index2);
|
|
|
return false
|