contenteditable="true" ctrl_enter,shift+enter-->换行,监听粘贴事件实现粘贴去掉文本样式

html :

<div id="inputArea" ref="inputBox" class="input-box-style" contenteditable="true" tabindex="1" @keydown="eventListen"> </div>

script:

 

```

 eventListen(event) {
                let allowKey = [8, 13, 37, 38, 39, 40]; // 上下左右 回车 删除
                if (event.keyCode === 13&& !(event.shiftKey)) {
                    event.preventDefault();
                    return false;
                }
                 // shift+回车-->换行
                if (event.shiftKey && event.keyCode == 13) {
                    this.contenteditableDivRange()
                    return false;
                }
                },

            contenteditableDivRange(){
            var docFragment = document.createDocumentFragment();
            //add the br, or p, or something else
            var newEle = document.createElement('br');
            docFragment.appendChild(newEle);

            //make the br replace selection
            var range = window.getSelection().getRangeAt(0);
            range.deleteContents();//从文档中移除 Range 包含的内容
            range.insertNode(docFragment);//在 Range 的起点处插入一个节点

            //create a new range
            range = document.createRange();
            range.setStartAfter(newEle);//以其它节点为基准,设置 Range 的起点
            range.collapse(true);//将 Range 折叠至其端点之一

            //make the cursor there
            var sel = window.getSelection();
            sel.removeAllRanges();//将所有的区域都从选区中移除
            sel.addRange(range);//一个区域(Range)对象将被加入选区
            },

```

 

监听粘贴,去掉复制文本的样式,放过图片

  mounted() {
            let target=document.getElementById("inputArea")
            target.addEventListener('paste',(event)=>{
                this.textPaste(event)
            })
}

 

          //处理粘贴
            textPaste(event){
                event.preventDefault()
                let newText
                // let newHtml
                let clp=(event.originalEvent||event).clipboardData
                //兼容针对opera ie等浏览器
                if(clp=== undefined||clp===null){
                    newText=window.clipboardData.getData("text")||""
                    if(newText!==""){
                        if(window.getSelection){
                            //针对IE11 10 9 safari
                            let  newNode=document.createElement("span")
                            newNode.innerHTML=newText
                            window.getSelection().getRangeAt(0).insertNode(newNode)
                        }else{
                            //兼容ie 10 9 8 7 6 5
                            document.selection.createRange().past
                        }
                    }
                }else{
                    // 兼容chrome或hotfire
                    newText=clp.getData('text/plain')||""
                    let file = clp.items&&clp.items[0];
                    // newHtml=clp.getData('text/html')||""
                    if(newText!==""){
                        document.execCommand('insertText',false,newText)
                    }else if (file && /image\/\w+/i.test(file.type)) {
                     // 类型为图片, 并且文件大小不为 0
                     this.imgReader(file)
                    }   
                }
            },
                 imgReader(item){
                var blob = item.getAsFile(),
                        reader = new FileReader();

                    reader.onload = function(e) {
                        var img = new Image();

                        img.src = e.target.result;
                        console.log('e', e)
                        document.getElementById("inputArea").appendChild(img);
                    };
                    reader.readAsDataURL(blob);
            }
posted @ 2021-12-03 10:31  花花张小花  阅读(948)  评论(0)    收藏  举报