我按照这个问题JavaScript get clipboard data on paste event (Cross browser)从剪贴板中获取粘贴的数据,但我使用的是jquery。现在我得到了数据,我删除了所有的html标签。但我不知道如何粘贴它。
element
是contenteditable div
element.on('paste', function (e) {
var clipboardData, pastedData;
e.preventDefault();
// Get pasted data via clipboard API
clipboardData = e.clipboardData || window.clipboardData || e.originalEvent.clipboardData;
pastedData = clipboardData.getData('Text').replace(/<[^>]*>/g, "");
// How to paste pasteddata now?
console.log(pastedData);
});
答案 0 :(得分:3)
可能更容易让粘贴继续并在之后立即更新元素。还取决于用例,因为光标位置可能会以这种方式丢失
$(':input').on('paste', function (e) {
var $el = $(this);
setTimeout(function () {
$el.val(function(){
return this.value.replace(/foo/g, "bar");
})
});
})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p>foo was here</p>
<textarea></textarea>
&#13;
答案 1 :(得分:1)
我找到了答案,我将分享它。为了从html标签清理剪贴板,你应该粘贴它:
element.on('paste', function (e) {
e.preventDefault();
var text;
var clp = (e.originalEvent || e).clipboardData;
if (clp === undefined || clp === null) {
text = window.clipboardData.getData("text") || "";
if (text !== "") {
text = text.replace(/<[^>]*>/g, "");
if (window.getSelection) {
var newNode = document.createElement("span");
newNode.innerHTML = text;
window.getSelection().getRangeAt(0).insertNode(newNode);
} else {
document.selection.createRange().pasteHTML(text);
}
}
} else {
text = clp.getData('text/plain') || "";
if (text !== "") {
text = text.replace(/<[^>]*>/g, "");
document.execCommand('insertText', false, text);
}
}
});
信用: l2aelba
答案 2 :(得分:-3)
嗯,这取决于您要粘贴的元素。您可以使用jQuery或本机Javascript来实现!
也许喜欢
$(targetNode).append(pastedData)
要么
document.getElementById('targetNode').innerText = pastedData