Q969 How can I suppress a right mouse click?
irt.org | Knowledge Base | JavaScript | Pointer | Q969 [ previous next ]
Q969 How can I suppress a right mouse click?
This script is not fool-proof. People can disable JavaScript
support in their browser, or use a browser which doesn't support
JavaScript, or use a browser to link directly to the image that you
want to protect. Also the pages and images are normally stored in the
users browser cache - for viewing later whilst offline. It also
doesn't stop users browsing the source of youe page from the toolbar
menus. You could attempt to load you page into a window without
toolbars - but again this isn't fool-proof (for the already listed
reasons). There is tool for Microsoft Internet Explorer 5 that will
encrypt JScript code - but this is only supported by Microsoft
Internet Explorer 5 - and will not allow the scripts to run on any
other browser.
Bearing this in mind the following script is an enhanced version
of the first one. It _hopefully_ stops right clicks (and left button
held down, followed by a right click) in both Netscape Navigator and
Microsoft Internet Explorer. It will not stop users who use a Mac -
where the mouse only has one button.
It this script doesn't do what you require (i.e. protect your images
and or your scripts) then don't use it and don't put your
images/scripts on the net. If your livelyhood relies on people not
copying your images - then add a water mark or "sample" stamp to them.
This first example requires an alert message to work correctly in Internet Explorer:
<head>
<script language="JavaScript1.1"><!--
var debug = true;
function right(e) {
if (navigator.appName == 'Netscape' && (e.which == 3 || e.which == 2)) return false;
else if (navigator.appName == 'Microsoft Internet Explorer' && (event.button == 2 || event.button == 3)) {
alert('Denied!');
return false;
}
return true;
}
document.onmousedown=right;
if (document.layers) window.captureEvents(Event.MOUSEDOWN);
window.onmousedown=right;
//--></script>
</head>
<body>
<!-- place your content after this line -->
<p>
<img src="picture.gif" width="100" height="100">
</p>
<p>
some text
</p>
<p>
<a href="somewhere.htm">text link</a>
</p>
<!-- and before this line -->
<script language="JavaScript1.1"><!--
// to prevent right click on images include:
for (var i=0; i<document.images.length; i++) document.images[i].onmousedown=right;
// to prevent right click on links include:
for (var i=0; i<document.links.length; i++) document.links[i].onmousedown=right;
//--></script>
</body>
</html>
|
Andrei Druzhinsky reponds with:
The following (not mine) disables the right click button totally - no
messages are seen. You have to download ActiveX though from Microsoft
site, which literally takes few seconds.
<head>
<script language="JavaScript"><!--
menuon=false;
function cancelmenu(e) {
if (document.all) {
if (event.button == 2) {
menuon=true;
if (popmenu.readyState==4) {
popmenu.RemoveAllItems();
popmenu.AddItem("","","","");
popmenu.Popup (event.x,event.y);
}
else
alert("Please wait. Page Loading...")
}
if (event.button == 1) {
if (menuon) {
popmenu.RemoveAllItems();
popmenu.Popup (event.x,event.y);
menuon=false;
}
}
}
}
}
document.onmousedown = cancelmenu;
//--></script>
</head>
<body>
<object id="popmenu" width=0 height=0 classid="CLSID:F5131C24-E56D-11CF-B78A-444553540000" codebase="http://activex.microsoft.com/controls/iptdweb/ikcntrls.cab">
<param name="_Version" value="65536">
<param name="_ExtentX" value="2646">
<param name="_ExtentY" value="1341">
<param name="_StockProps" value="0">
</object>
</body>
</html>
|
This last example works without an alert message in Internet Explorer:
<script language="JavaScript1.2">
if (window.Event)
document.captureEvents(Event.MOUSEUP);
function nocontextmenu() {
event.cancelBubble = true, event.returnValue = false;
return false;
}
function norightclick(e) {
if (window.Event) {
if (e.which == 2 || e.which == 3) return false;
}
else if (event.button == 2 || event.button == 3) {
event.cancelBubble = true, event.returnValue = false;
return false;
}
}
if (document.layers)
document.captureEvents(Event.MOUSEDOWN);
document.oncontextmenu = nocontextmenu;
document.onmousedown = norightclick;
document.onmouseup = norightclick;
//--></script>
|
Note:
On a Windows keyboard there is a "right click" key which simulates a mouse
right click. (Located next to the right hand "Ctrl" key) The methods
detailed in Q969 supress the mouse right click but not the keyboard
simulation of a right click. This is the context menu and not actually a right click.
IE5+ should understand this:
<body onContextMenu="return false">
|
Feedback on 'Q969 How can I suppress a right mouse click?'
|