拦截JavaScript中的粘贴数据

我从Javascript中的Intercept paste事件中获取了以下代码。

我需要在它被粘贴之前得到它,否则我会丢失我需要保存的“\ n”字符。

它可以很好地拦截具有id的一个元素的剪贴板数据。 我需要它来处理所有输入元素。 当我尝试使用jQuery来获取输入元素时。

任何帮助表示赞赏。

var paster = function () { var myElement = document.getElementByTagName('pasteElement'); myElement.onpaste = function(e) { var pastedText = undefined; if (window.clipboardData && window.clipboardData.getData) { // IE pastedText = window.clipboardData.getData('Text'); } else if (e.clipboardData && e.clipboardData.getData) { pastedText = e.clipboardData.getData('text/plain'); } processExcel(pastedText); // Process and handle text... return false; // Prevent the default handler from running. }; } 

只需向文档添加paste事件侦听器即可。

 document.addEventListener("paste", function (e) { console.log(e.target.id); var pastedText = undefined; if (window.clipboardData && window.clipboardData.getData) { // IE pastedText = window.clipboardData.getData('Text'); } else if (e.clipboardData && e.clipboardData.getData) { pastedText = e.clipboardData.getData('text/plain'); } e.preventDefault(); e.target.value = "You just pasted '" + pastedText + "'"; return false; }); 

小提琴

nmaier说了什么,但你还需要检查原始事件。

 document.addEventListener("paste", function (e) { console.log(e.target.id); var pastedText = undefined; if (window.clipboardData && window.clipboardData.getData) { // IE pastedText = window.clipboardData.getData('Text'); } else { var clipboardData = (e.originalEvent || e).clipboardData; if (clipboardData && clipboardData.getData) { pastedText = clipboardData.getData('text/plain'); } e.preventDefault(); e.target.value = "You just pasted '" + pastedText + "'"; return false; } }); 

此外,您应该只将事件侦听器添加到元素,而不是整个文档。

Interesting Posts