Sick Gaming
[Tut] Disable mouse right click, cut, copy, paste with JavaScript or jQuery - Printable Version

+- Sick Gaming (https://www.sickgaming.net)
+-- Forum: Programming (https://www.sickgaming.net/forum-76.html)
+--- Forum: PHP Development (https://www.sickgaming.net/forum-82.html)
+--- Thread: [Tut] Disable mouse right click, cut, copy, paste with JavaScript or jQuery (/thread-99810.html)



[Tut] Disable mouse right click, cut, copy, paste with JavaScript or jQuery - xSicKxBot - 08-16-2022

Disable mouse right click, cut, copy, paste with JavaScript or jQuery

<div style="margin: 5px 5% 10px 5%;"><img src="https://www.sickgaming.net/blog/wp-content/uploads/2022/08/disable-mouse-right-click-cut-copy-paste-with-javascript-or-jquery.jpg" width="550" height="281" title="" alt="" /></div><div><div class="modified-on" readability="7.1111111111111"> by <a href="https://phppot.com/about/">Vincy</a>. Last modified on August 14th, 2022.</div>
<p>Before learning how to disable the cut, copy, paste and right-click event in JavaScript we should know first Why.</p>
<p>Why we need this is, for <a href="https://phppot.com/css/how-to-make-online-photo-editing-effects-like-blur-image-sepia-vintage/">copying and manipulating content</a> displayed on the client. It lets the user struggle to do the following for example.</p>
<ol>
<li>Take the copyrighted site content by copy and paste.</li>
<li><a href="https://phppot.com/php/extract-images-from-url-in-excel-with-php-using-phpspreadsheet/">Save media files by right-clicking</a> and saving assets.</li>
</ol>
<p>We implement this disabling by using the below steps. The first two of them are mandatory and the 3rd one is optional.</p>
<ol>
<li>Listen to the event type cut, copy, paste and right-click.</li>
<li>Prevent the default behavior with the reference of the <em>event</em> object.</li>
<li>Acknowledge users by showing alert messages [optional step].</li>
</ol>
<p><a class="demo" href="https://phppot.com/demo/disable-mouse-right-click-cut-copy-paste/">View Demo</a></p>
<p><img loading="lazy" class="alignnone size-large wp-image-18941" src="https://phppot.com/wp-content/uploads/2022/08/disable-cut-copy-paste-right-click-550x281.jpg" alt="disable cut copy paste right click" width="550" height="281" srcset="https://phppot.com/wp-content/uploads/2022/08/disable-cut-copy-paste-right-click-550x281.jpg 550w, https://phppot.com/wp-content/uploads/2022/08/disable-cut-copy-paste-right-click-300x153.jpg 300w, https://phppot.com/wp-content/uploads/2022/08/disable-cut-copy-paste-right-click-768x392.jpg 768w, https://phppot.com/wp-content/uploads/2022/08/disable-cut-copy-paste-right-click.jpg 800w" sizes="(max-width: 550px) 100vw, 550px"></p>
<h2>Example 1 – Disabling cut, copy, paste and mouse right-click events</h2>
<p>This JavaScript disables the cut, copy, paste and right-click on a textarea content.</p>
<p>It defines a callback invoked on document ready event. It uses jQuery.</p>
<p>In this callback, it listens to the cut, copy, paste and the mouse right-click action requests.</p>
<p>When these requests are raised this script prevents the default behavior. Hence, it stops the expected action based on the cut, copy, and other requests mentioned above.</p>
<pre class="prettyprint"><code class="language-javascript">$(document).ready(function() { $('textarea').on("cut", function(e) { e.preventDefault(); alertUser('Cut'); }); $('textarea').on("copy", function(e) { e.preventDefault(); alertUser('Copy'); }); $('textarea').on("paste", function(e) { e.preventDefault(); alertUser('Paste'); }); $("textarea").on("contextmenu", function(e) { e.preventDefault(); alertUser('Mouse right click'); });
}); function alertUser(message) { $("#phppot-message").text(message + ' is disabled.'); $("#phppot-message").show();
}
</code></pre>
<h3>HTML with Textarea and alert box</h3>
<p>This HTML has the textarea. The JavaScript targets this textarea content to disable the cut, copy and more events.</p>
<p>Once disabled the default behavior, the UI should notify the user by <a href="https://phppot.com/php/add-edit-comments-using-jquery-dialogify/">displaying a message</a>.</p>
<p>So, it contains an HTML alert box to show a red ribbon with a related error message to let the user understand.</p>
<p>It includes the <a href="https://releases.jquery.com/" target="_blank" rel="noopener">jQuery library with a CDN URL</a>. Insert the above script next to the jQuery include then run the example.</p>
<p>The downloadable at the end of this article contains the complete working example.</p>
<pre class="prettyprint"><code class="language-html">&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
&lt;title&gt;Disable mouse right click, cut, copy, paste with JavaScript or jQuery&lt;/title&gt;
&lt;meta name="viewport" content="width=device-width, initial-scale=1" /&gt;
&lt;link rel="stylesheet" type="text/css" href="css/style.css" /&gt;
&lt;link rel="stylesheet" type="text/css" href="css/form.css" /&gt;
&lt;style&gt;
#phppot-message { display: none;
}
&lt;/style&gt;
&lt;script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"&gt;&lt;/script&gt; &lt;/head&gt; &lt;body&gt; &lt;div class="phppot-container"&gt; &lt;h2&gt;Disable mouse right click, cut, copy, paste&lt;/h2&gt; &lt;textarea name="notes" class="full-width" rows="5"&gt;&lt;/textarea&gt; &lt;div id="phppot-message" class="error"&gt;&lt;/div&gt; &lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
</code></pre>
<h2>Example 2 – Thin version using jQuery</h2>
<p>This example is a thin version of the above. It also uses the jQuery library to disable the cut, copy paste and right-click events.</p>
<p>This binds all the events to be disabled. It has a single-line code instead of creating exclusive listeners for each event.</p>
<p>This method has a slight disadvantage. That is, it shows a generic message while stopping any one of the cut, copy, paste and right-click events.</p>
<p>In the first method, the <a href="https://phppot.com/jquery/jquery-show-hide/">acknowledgment message</a> is too specific. That message gives more clarity on what is triggered and what is disabled and prevented.</p>
<p>But, the advantage of the below example is that it is too thin to have it as a client-side feature in our application.</p>
<pre class="prettyprint"><code class="language-javascript">$(document).ready(function() { $('textarea').bind('cut copy paste contextmenu', function(e) { e.preventDefault(); $("#phppot-message").text('The Cut copy paste and the mouse right-click are disabled.'); $("#phppot-message").show(); });
});
</code></pre>
<h2>Example 3 – For JavaScript lovers</h2>
<p>Do you want a pure JavaScript solution for this example? The below script achieves this to disable cut, copy, paste and right-click.</p>
<p>It has no jQuery or any other client-side framework or libraries. I believe that the frameworks are for achieving a volume of effects, utils and more.</p>
<p>If the application is going to have thin requirements, then no need for any framework.</p>
<h3>HTML with onCut, onCopy, onPaste and onContextMenu attributes</h3>
<p>The Textarea field in the below HTML has the following callback attributes.</p>
<ul>
<li>onCut</li>
<li>OnCopy</li>
<li>onPaste</li>
<li>onContextMenu</li>
</ul>
<p>In these event occurrences, it calls the&nbsp;<em>disableAction()</em>. It sends the event object and a string to specify the event occurred.</p>
<pre class="prettyprint"><code class="language-html">&lt;textarea name="notes" class="full-width" rows="5" onCut="disableAction(event, 'Cut');" onCopy="disableAction(event, 'Copy');" onpaste="disableAction(event, 'Paste');" oncontextmenu="disableAction(event, 'Right click');"&gt;&lt;/textarea&gt;
&lt;div id="phppot-message" class="error"&gt;&lt;/div&gt;
</code></pre>
<h3>JavaScript function called on cut, copy, paste and on right click</h3>
<p>In the JavaScript code, it reads the event type and disables it.</p>
<p>The event.preventDefault() is the common step in all the <a href="https://phppot.com/jquery/enable-disable-submit-button-based-on-validation/">examples to disable</a> the cut, copy, paste and right click.</p>
<pre class="prettyprint"><code class="language-javascript">function disableAction(event, action) { event.preventDefault(); document.getElementById("phppot-message").innerText = action + ' is disabled.'; document.getElementById("phppot-message").style.display = 'block';
}
</code></pre>
<h2>Disclaimer</h2>
<p>The keyboard or mouse event callbacks like <em>onMouseDown()</em> or <em>onKeyDown</em> lags in performance. Also, it has its disadvantages. Some of them are listed below.</p>
<ol>
<li>The keys can be configured and customized. So, event handling with respect to the keycode is not dependable.</li>
<li>On clicking the mouse right, it displays the menu before the <em>onMouseDown()</em> gets and checks the key code. So, disabling mouse-right-click is failed by using <em>onMouseDown()</em> callback.</li>
<li>Above all, an user can easily disable JavaScript in his browser and use the website.</li>
</ol>
<p><a class="demo" href="https://phppot.com/demo/disable-mouse-right-click-cut-copy-paste/">View Demo</a><a class="download" href="https://phppot.com/downloads/disable-mouse-right-click-cut-copy-paste.zip">Download</a></p>
<p> <!-- #comments --> </p>
<div class="related-articles">
<h2>Popular Articles</h2>
</p></div>
<p> <a href="https://phppot.com/javascript/disable-mouse-right-click-cut-copy-paste/#top" class="top">↑ Back to Top</a> </p>
</div>


https://www.sickgaming.net/blog/2022/08/14/disable-mouse-right-click-cut-copy-paste-with-javascript-or-jquery/