之前以为禁用剪切,复制,粘贴得整一大堆js,结果今天一查,发现竟然是组件的一个属性,- -!
剪切:oncut
复制:oncopy
粘贴:onpaste
这三样属性主要针对的是文本组件,比如<input type="text"/>,<textarea></textarea> ,<p></P>等,需要注意的是p标签需要注意contenteditable="true"(可编辑,又涨姿势了~~)这个属性。准确的讲这是三个时间,可以在触发时执行相应的脚本。
oncut
例子:
1 <!DOCTYPE html> 2 <html> 3 <body> 4 5 <p>该实例演示了如何向 input 元素中添加 "oncut" 事件。</p> 6 7 <input type="text" oncut="myFunction()" value="尝试剪切该文本"> 8 <textarea oncut="myFunction()">ddd</textarea> 9 <input type="text" oncut="return false;" value="设为return false你将无法剪切"> 10 <script> 11 function myFunction() { 12 alert("你剪切了文本!"); 13 } 14 </script> 15 16 </body> 17 </html> 18
oncopy
例子:
<!DOCTYPE html> <html> <body> <p>该实例演示了如何向 input 元素中添加 "oncut" 事件。</p> <input type="text" oncopy="myFunction()" value="尝试复制该文本"> <textarea oncopy="myFunction()">ddd</textarea> <input type="text" oncopy="return false;" value="设为return false你将无法复制"> <script> function myFunction() { alert("你复制了文本!"); } </script> </body> </html>
onpaste
<!DOCTYPE html> <html> <body> <p>该实例演示了如何向 input 元素中添加 "oncut" 事件。</p> <input type="text" onpaste="myFunction()" value="尝试粘贴"> <textarea onpaste="myFunction()">ddd</textarea> <input type="text" onpaste="return false;" value="设为return false你将无法粘贴"> <p contenteditable="true" onpaste="myFunction()">尝试在段落中粘贴内容。</p> <script> function myFunction() { alert("你剪切了文本!"); } </script> </body> </html>
注意事项:
1、<p>元素如果要让这oncut和onpaste可用,则必须要把contenteditable="true"加上,毕竟能编辑才能谈剪切复制嘛
2、如果要禁用这三样功能,那么把属性值设为“return false;”,只是设为false是不行的。而且,“return false;”写在方法最后作为返回值是没有用的,比如:
<p contenteditable="true" onpaste="myFunction()">尝试在段落中粘贴内容。</p> <script> function myFunction() { alert("你剪切了文本!"); return false; //这里是不起任何作用的 } </script>
3.上面只是列举了在html中使用,那么如何在js中使用下面举个例子:
<!DOCTYPE html> <html> <body> <p>该实例演示了如何使用 HTML DOM 向 input 元素中添加 "onpaste" 事件。</p> <input type="text" id="myInput" value="尝试在此处粘贴文本" size="40"> <input type="text" id="myInput2" value="尝试在此处粘贴文本2" size="40"> <script> document.getElementById("myInput").onpaste = function(){return false;}; document.getElementById("myInput2").onpaste = function() {myFunction()}; function myFunction() { alert("你粘贴了文本!"); } </script> </body> </html>
需要注意的是,你必须要用匿名函数function将你的方法包起来,function() {myFunction()},看到这里应该明白为什么在属性中如果只是写false,或者把方法的返回值设为false没有用了吧。
那么还有一些小遗憾,如果我既不想让组件使用粘贴功能,但又希望在他用粘贴功能的时候进行一些操作,怎么办?根据上面的js代码,我们想到了方法:在你的代码中加入返回值,并且把整个方法作为结果进行返回
<!DOCTYPE html> <html> <body> <p>该实例演示了如何使用 HTML DOM 向 input 元素中添加 "onpaste" 事件。</p> <input type="text" id="myInput" value="尝试在此处粘贴文本" size="40" onpaste="return myFunction();"> <script> function myFunction() { alert("你粘贴了文本!"); return false; } </script> </body> </html>
以上代码全部火狐亲测,火狐版本37.0.2