通过execCommand(“ paste”,...)触发的IE11 onPaste事件

时间:2018-08-01 08:56:19

标签: javascript addeventlistener execcommand

我正在尝试制作一些粘贴事件监听器,以“清除”输入。因为IE11没有execCommand(“ insertText”,..),所以我使用execCommand(“ paste”,..)(对于没有insertText的浏览器)。但是以某种方式,在execCommand(“ paste”,..)中再次触发事件粘贴。

现在,问题是,如何防止execCommand(“ paste”,...)触发粘贴事件?

这是我当前的代码:

function pasteHandler(e) {
    // cancel paste
    e.preventDefault();
    // get text representation of clipboard
    clipboard = e.clipboardData || window.clipboardData;
    var text;
    if (e.clipboardData){
        text = e.clipboardData.getData("text/plain");
    }else if (window.clipboardData){
        text = window.clipboardData.getData("text");
    }   
    text = text.trim(); //example cleaning
    console.log(text);

    // insert text manually
    if (document.queryCommandSupported('insertText')) {
      document.execCommand('insertText', false, text);
    } else {
      document.execCommand('paste', false, text);
    }
}

obj.addEventListener("paste", pasteHandler, false);

编辑:
我添加监听器的元素是:

<div contenteditable="true"> </div>

0 个答案:

没有答案