如何通过右键单击javascript来处理选中的粘贴? 我试过" onpaste"事件和所有其他html事件可用,但没有任何作用。
答案 0 :(得分:31)
onpaste事件应该适用于所有现代浏览器( UPD 包括Opera> = 12.10 1 )。
将它绑定在jQuery中:
$('#txt').on('paste', function() {console.log('text pasted!')})
这是一个实例: http://jsfiddle.net/7N6Xq/
在纯JavaScript中,对于现代浏览器来说它看起来像这样
elem.addEventListener ("paste", handler, false); // all browsers and IE9+
和旧的IE版本:
elem.attachEvent ("onpaste", handler); // IE<9
您还可以将其与 oninput 和其他事件(更改, propertychange , dragdrop 等)以创建相对无懈可击的内容更改跟踪。
脚注:
1 Opera支持从Presto/2.10.286开始的Clipboard API,对应于建议here的12.10。 Opera的Blink versions(从15开始)也应该支持它,但我无法测试它,因为仍然没有Linux版本。
答案 1 :(得分:2)
默认情况下,该事件不会被曝光为“onpaste”IIRC。你可以通过发布
在jQuery中完成它jQuery(document).bind('paste', function(e){ alert('paste event caught') });
答案 2 :(得分:1)
我很惊讶问题#4532473如果您想要捕捉后续活动,会发生什么事情。因为这可能是问题的一半,在firefox(测试)中可能的方法是在onpaste处理程序内注册oninput事件,并在执行完后立即删除oninput处理程序。
即使用onpropertychange而不是oninput。 (未经测试)
答案 3 :(得分:1)
很好的纯JS解决方案(根据要求......)可用on the Mozilla dev site
<!DOCTYPE html>
<html>
<head>
<title>onpaste event example</title>
</head>
<body>
<h1>Play with this editor!</h1>
<textarea id="editor" rows="3" cols="80">
Try pasting text into this area!
</textarea>
<script>
function log(txt) {
document.getElementById("log").appendChild(document.createTextNode(txt + "\n"));
}
function pasteIntercept(evt) {
log("Pasting!");
}
document.getElementById("editor").addEventListener("paste", pasteIntercept, false);
</script>
<h2>Log</h2>
<textarea rows="15" cols="80" id="log" readonly="true"></textarea>
</body>
</html>