在JavaScript中,常見的編輯事件有3種:
下面我們一一給大家詳細講解這些JavaScript編輯事件。
在JavaScript中,在網頁中復制內容時會觸發復制事件oncopy。我們可以通過oncopy事件來禁止用戶復制網頁內容。
此外,與oncopy配對的還有一個onbeforecopy,表示在復制內容之前觸發的事件。也就是在時間上,onbeforecopy比oncopy早。
舉例:
在線測試<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> </head> <body> <div> 學習網成立於2015年4月1日,是一個富有活力的技術學習網站。 學習網為廣大網絡工作者(網頁開發人員、站長等)提供各種精品教程以及最精華資料。</div> <script type="text/javascript"> documen.body.oncopy=function(){ alert("版權所有,禁止復制!"); return false; //返回false,表示屏蔽復制功能 } </script> </body> </html>
在浏覽器預覽效果如下:
分析:
當我們選中該網頁內容,並且點擊“復制”時,就會彈出以下提示框:
其實上述方法不能真正做到完全屏蔽,因為我們可以到浏覽器中設置“禁用JavaScript”,這時使用JavaScript實現屏蔽復制就無效了。進一步擴展,使用這種屏蔽方式也極大影響了用戶體驗,大家在實際開發的時候如果不想你的網站成為鳥不拉屎的地方的話,還是少點用。
在JavaScript中,當網頁文本框等中選中的內容被剪切時會觸發剪切事件oncut。
此外,與oncut配對的還有一個onbeforecut,表示在復制內容之前觸發的事件。也就是在時間上,onbeforecut比oncut早。
舉例:
在線測試<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> </head> <body> <textarea id="txt" cols="20" rows="5"> 學習網成立於2015年4月1日,是一個富有活力的技術學習網站。</textarea> <script type="text/javascript"> var e = document.getElementById("txt"); e.oncut = function () { alert("禁止剪切文本框內容!"); return false; } </script> </body> </html>
在浏覽器預覽效果如下:
分析:
當我們選中多行文本框textarea內容,並且點擊“剪切”時,就會彈出以下提示框:
跟oncopy事件類似,oncut事件也需要返回false才能禁止剪切。大家可以試試在上面的在線測試中把“return false;”這一句刪除會看到,雖然彈出了提示框,但是內容還是被剪切了!
在JavaScript中,當我們往文本框等中粘貼內容時會觸發粘貼事件onpaste。
此外,與oncopy配對的還有一個onbeforepaste,表示在復制內容之前觸發的事件。也就是在時間上,onbeforepaste 比onpaste早。
舉例:
在線測試<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> </head> <body> <textarea id="txt" cols="20" rows="5"></textarea> <script type="text/javascript"> var e = document.getElementById("txt"); e.onbeforepaste = function () { window.clipboardData.setData("text",""); //清空剪貼板 } </script> </body> </html>
在浏覽器預覽效果如下:
分析:
這個例子請在IE浏覽器下預覽,因為chrome等浏覽器不支持window.clipboardData.setData的用法。
在這個例子中,在向文本框粘貼文本時,利用onbeforepaste事件來清空window對象剪貼板,使其無法向文本框中粘貼數據。在這裡,如果使用onpaste就無法實現了,大家想一一下onpaste和onbeforepaste兩者先後問題就知道了。