それはそれがどのように行われるかによって異なります。また、イベント リスナーを削除/無効化することは常に危険です。サイトの機能に深刻な損害を与える可能性があります。また、ハンドラーが悪意を持っているか善意であるかを知ることはできません。少なくとも、ハンドラーが存在するかどうかを知ることはできません。
だから、私は「javascriptがコピーペーストを防ぐ」という最初のいくつかのGoogleの結果をざっと読んだところ、ほとんど愚かなスクリプトを見つけました. スクリプトでできることは次のとおりです。
- 入力要素のすべての oncopy、-paste、-input、-cut、-drag などのプロパティを削除します
- ドキュメントでこれらのイベントの種類をキャプチャし、その伝播を停止します。そのため、(バブル) ハンドラーが呼び出されることはなく、既定のアクションを防ぐことはできません。
しかし、すでに述べたように、これはすべてを妨げることはできません。非常に便利なイベントであるこのソリューションは、一度に複数の文字が挿入されるのを防ぐためinput
に巧妙に使用されています。そのため、そのイベントを停止してアプリケーションを中断するかどうかを決定する必要があります。
var evts = ["copy", "paste", "cut", "drag", "selectionstart?", "input?", …?];
var els = [document, document.body].concat(
[].slice.call(document.getElementsByTagName("input")),
[].slice.call(document.getElementsByTagName("textarea"))
);
function trap(e) { e.stopPropagation(); }
for (var i=0; i<evts.length; i++) {
var evt = "on"+evts[i].charAt(0).toUpperCase()+evts[i].substr(1);
for (var j=0; j<els.length; j++)
els[j][evt] = null; // remove handler
document.addEventListener(evts[i], trap, true); // capture phase
}