vue 實(shí)現(xiàn)圖片粘貼至輸入框功能

將div設(shè)置 contenteditable 屬性

 <div contenteditable
           ref="textInput"
           id="drop-area"
           rows="4"
           resize="false"
           class="textInput h100 overflow-x"
           @focus="focus = true"
           @blur="focus = false"
           @input="inputChange"
           @keydown.enter.exact.prevent="handleEnter"
           @keyup.ctrl.enter.prevent.exact="handleLine"
           @keydown.up.stop="handleUp"
           @keydown.down.stop="handleDown"></div>

生命周期 mounted綁定粘貼事件

           this.$refs['textInput'].addEventListener('paste', this.handlePaste)

         /**
        * 粘貼圖片
        */
      handlePaste(){
          const clipboardData = e?.clipboardData
          const file = clipboardData?.files[0]
         /**
           * 獲取圖片按比例縮小的寬度
           */
          getImgWidth(file).then((width) => {
            const src = fileToUrl(file)
            const uid = this.getUid()
            document.execCommand('insertHTML', false, `<img src="${src}"  ondblclick="handelImage(\'' + src + '\')" width=${width} uid=${uid} />`)
            // 存儲(chǔ)復(fù)制的文件流
            this.copyImgList.push({ file, uid })
          })
}
   /**
     * 輸入框聚焦
     */
    getSelectPos() {
      var esrc = this.$refs['text-input']
      var range = document.createRange()
      range.selectNodeContents(esrc)
      range.collapse(false)
      var sel = window.getSelection()
      sel.removeAllRanges()
      sel.addRange(range)
    },
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容