请问在可编辑DIV标签里加入这个正则,我想在用户粘贴进去时直接过滤掉img标签,没效果有bug,怎么改呢?

亲测正则没问题,但是好像粘贴事件有什么不对

<div id="edithtml" class="" contenteditable="true" onpaste="this.innerHTML = this.innerHTML.replace(/<(?!img).*?>/g, '')"></div>

阅读 1.8k
2 个回答

可以在粘贴之后执行

网上找的这段代码,会在复制时只选择文本

function pasteFilter() {
      var e = window.event;
      e.preventDefault();
      var text = null;
      //得到剪贴板中的文本
      if (window.clipboardData && clipboardData.setData) {
        // IE
        text = window.clipboardData.getData('text');
      } else {
        try {
          text = (e.originalEvent || e).clipboardData.getData('text/plain');
        } catch (e) {
          return;
        }
      };
      if (document.body.createTextRange) {
        if (document.selection) {
          textRange = document.selection.createRange();
        } else if (window.getSelection) {
          sel = window.getSelection();
          var range = sel.getRangeAt(0);
          // 创建临时元素,使得TextRange可以移动到正确的位置
          var tempEl = document.createElement("span");
          tempEl.innerHTML = "&#FEFF;";
          range.deleteContents();
          range.insertNode(tempEl);
          textRange = document.body.createTextRange();
          textRange.moveToElementText(tempEl);
          tempEl.parentNode.removeChild(tempEl);
        };
        textRange.text = text;
        textRange.collapse(false);
        textRange.select();
      } else {
        // Chrome之类浏览器
        document.execCommand("insertText", false, text);
      };
    };
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题