如何在Chrome上修改剪贴板粘贴数据

时间:2018-01-04 11:26:39

标签: javascript google-chrome

我符合要求,用户可以从任何其他资源(如word,excel,notepad ++)复制数据,然后将其粘贴到我的网页,该应用程序必须在Chrome上运行。如果粘贴数据包含一些无效数据,我必须修改它。

我尝试了 clipboardData.setData ,但它只适用于 IE ,下面是我的代码:

<script type="text/javascript">
var elEditor = document.getElementById("editor");

elEditor.addEventListener('paste', function(e){
    var clipboardData = e.clipboardData || e.originalEvent.clipboardData || window.clipboardData;
    var text = clipboardData.getData('Text');
    console.log("---before:\t"+text);
    text = text.replace(/\d+/,new Date().getTime());
    //don't change the pasted data on Chrome page!That's the key point make it fail
    clipboardData.setData('Text',text);
    console.log("---after:\t"+text);
    return false;
});

</script>

我可以看到Chrome控制台中的数据已更改,但在网页中,数据仍未更改!任何人都可以帮助我吗?

如果不使用 clipboardData.setData ,还有其他方法可以做同样的事情吗?

提前感谢!

1 个答案:

答案 0 :(得分:0)

对于“粘贴”事件,您需要更改字段的内容,因为粘贴已经发生;

示例:https://jsfiddle.net/o2gxgz9r/75276/

        $('.cpf_cnpj').each(function(){
            $(this).on('paste', function(e){

              var clipboardData = e.clipboardData || e.originalEvent.clipboardData || window.clipboardData;
              if (clipboardData){ 
                    var text = clipboardData.getData('text');
                    text = text.replace(/\./g, '').replace(/-/g, '').replace(/\//g, '');            
                    e.target.value = text;
                    e.preventDefault();                     
              }
            });
        });