Можно ли отключить правый клик на моей веб-странице без использования JavaScript? Я спрашиваю об этом, потому что большинство браузеров позволяют пользователю отключать JavaScript.
Если нет, как использовать JavaScript для отключения правого клика?
Можно ли отключить правый клик на моей веб-странице без использования JavaScript? Я спрашиваю об этом, потому что большинство браузеров позволяют пользователю отключать JavaScript.
Если нет, как использовать JavaScript для отключения правого клика?
Вы можете сделать это с помощью JavaScript, добавив прослушиватель событий для события "contextmenu" и вызвав метод preventDefault()
:
document.addEventListener('contextmenu', event => event.preventDefault());
Это сказано: НЕ ДЕЛАЙТЕ ЭТО.
Почему? Потому что он не достигает ничего, кроме раздражающих пользователей. Кроме того, во многих браузерах есть опция безопасности, запрещающая отключать контекстное меню в любом случае.
Не уверен, зачем вам это нужно. Если это из-за некоторой неуместной уверенности в том, что вы можете защитить свой исходный код или изображения таким образом, подумайте еще раз: вы не можете.
DO NOT
Просто, не надо.
Независимо от того, что вы делаете, вы не можете запретить пользователям иметь полный доступ к каждому биту данных на вашем веб-сайте. Любой код Javascript, который вы можете передать, можно отключить, просто отключив Javascript в браузере (или используя плагин, такой как NoScript). Кроме того, нет возможности отключить возможность любого пользователя просто "просматривать источник" или "просматривать информацию о странице" (или использовать wget) для вашего сайта.
Это не стоит усилий. На самом деле это не будет работать. Это сделает ваш сайт активно враждебным для пользователей. Они заметят это и остановят посещение. Для этого нет никакой пользы, только потерянные усилия и потерянный трафик.
Не.
Обновление: Кажется, эта небольшая тема со временем оказалась довольно противоречивой. Тем не менее, я согласен с этим ответом на этот вопрос. Иногда правильный ответ - это совет, а не буквальный ответ.
Люди, которые спотыкаются на этот вопрос в надежде узнать, как создавать пользовательские контекстные меню, должны искать в другом месте, например, эти вопросы:
Первоначальный вопрос состоял в том, как остановить щелчок правой кнопкой мыши, учитывая, что пользователь может отключить JavaScript: который звучит гнусно и злобно (отсюда и отрицательные ответы) - но все дубликаты перенаправляются здесь, хотя многие дубликаты требуют меньше злые цели.
Как, например, с помощью правой кнопки мыши в играх HTML5. Это можно сделать с помощью встроенного кода выше, или немного приятнее, чем-то вроде этого:
document.addEventListener("contextmenu", function(e){
e.preventDefault();
}, false);
Но если вы делаете игру, помните, что кнопка правой кнопки запускает событие contextmenu - но она также запускает обычные события mousedown и mouseup. Поэтому вам нужно проверить свойство , которое, чтобы увидеть, было ли оно левым (что === 1), средним (что === 2) или правильным (что === 3) мышью который запускает событие.
Вот пример в jQuery - обратите внимание, что нажатие правой кнопки мыши вызывает три события: событие mousedown, событие contextmenu и событие mouseup.
// With jQuery
$(document).on({
"contextmenu": function(e) {
console.log("ctx menu button:", e.which);
// Stop the context menu
e.preventDefault();
},
"mousedown": function(e) {
console.log("normal mouse down:", e.which);
},
"mouseup": function(e) {
console.log("normal mouse up:", e.which);
}
});
Итак, если вы используете левую и правую кнопки мыши в игре, вам придется выполнять некоторую условную логику в обработчиках мыши.
Если вам не нужно уведомлять пользователя с сообщением каждый раз, когда они пытаются щелкнуть правой кнопкой мыши, попробуйте добавить это в свой тег тела
<body oncontextmenu="return false;">
Это заблокирует весь доступ к контекстному меню (не только правой клавишей мыши, но и с клавиатуры).
Однако, как уже упоминалось в других ответах, на самом деле нет смысла добавлять деаблер правой кнопкой мыши. Любой, обладающий базовыми знаниями браузера, может просматривать исходный код и извлекать необходимую информацию.
Если вы являетесь поклонником jquery, используйте этот
$(function() {
$(this).bind("contextmenu", function(e) {
e.preventDefault();
});
});
Если ваша цель состоит в том, чтобы люди не могли загружать ваши изображения, как сказал большинство людей, отключить правый щелчок практически неэффективно.
Предполагая, что вы пытаетесь защитить изображения, альтернативные методы -
Используя flash-плеер, пользователи не могут загружать их как таковые, но они могут легко выполнять захват экрана.
Если вы хотите быть более аккуратным, сделайте изображение фоном div, содержащим прозрачное изображение, à la -
<div style="background-image: url(YourImage.jpg);">
<img src="transparent.gif"/>
</div>
будет достаточно для предотвращения случайного кражи ваших изображений (см. ниже образец), но, как и во всех этих методах, тривиально победить с базовым пониманием html.
Во-первых, вы не можете достичь этого, не используя возможности клиентской стороны. Здесь работает javascript.
Во-вторых, если вы пытаетесь контролировать то, что конечный пользователь может потреблять с вашего сайта, вам нужно переосмыслить, как вы отображаете эту информацию. Изображение имеет общедоступный URL-адрес, который может быть получен через HTTP без необходимости использования браузера.
Аутентификация может контролировать, кто имеет доступ к каким ресурсам.
Встроенный водяной знак в изображениях может доказать, что изображение было от конкретного человека/компании.
В конце дня управление ресурсами - это управление пользователями/гостями.
Первое правило Интернета, если вы этого не хотите, не публикуйте его!
Второе правило Интернета, если вы этого не хотите, не помещайте в Интернет!
Вы не можете выполнить то, что вы просите, не используя Javascript. Любые другие технологии, которые вы можете использовать, могут помочь составить веб-страницу на стороне сервера для отправки в браузер.
Просто нет хорошего решения, и нет периода решения без Javascript.
Если ваша цель состоит в том, чтобы запретить пользователям просто сохранять ваши изображения, вы также можете проверить, является ли выбранная цель изображением, в этом случае отключить правосторонний щелчок. Поэтому правый клик можно использовать для других целей. Взято из приведенного выше кода:
document.addEventListener("contextmenu", function(e){
if (e.target.nodeName === "IMG") {
e.preventDefault();
}
}, false);
Это просто убрать самый простой способ сохранить ваши изображения, но это все еще можно сделать.
<!DOCTYPE html>
<html>
<head>
<script type='text/javascript' src='http://code.jquery.com/jquery-1.4.4.min.js'></script>
<script type='text/javascript'>//<![CDATA[
$(function(){
$('img').bind('contextmenu', function(e){
return false;
});
});//]]>
</script>
</head>
<body>
<img src="http://www.winergyinc.com/wp-content/uploads/2010/12/ajax.jpg"/>
</body>
Сделайте это как показано ниже (он работает и с firefox):
$(document).on("contextmenu",function(e){
if( e.button == 2 ) {
e.preventDefault();
callYourownFucntionOrCodeHere();
}
return true;
});
Конечно, как и все остальные комментарии здесь, это просто не работает.
Я когда-то создавал простой java-апплет для клиента, который заставлял любой захват изображения выполняться с помощью захвата экрана, и вам, возможно, захочется рассмотреть подобный метод. Он работал в рамках ограничений, но я все же считаю, что это пустая трата времени.
Поместите этот код в свой тег <head>
вашей страницы.
<script type="text/javascript">
function disableselect(e){
return false
}
function reEnable(){
return true
}
//if IE4+
document.onselectstart=new Function ("return false")
document.oncontextmenu=new Function ("return false")
//if NS6
if (window.sidebar){
document.onmousedown=disableselect
document.onclick=reEnable
}
</script>
Это отключит правый щелчок на всей веб-странице, но только при включенном JavaScript.
<script>
window.oncontextmenu = function () {
console.log("Right Click Disabled");
return false;
}
</script>
Я использовал этот код для отключения правой кнопки мыши на любой веб-странице, он работает нормально. Вы можете использовать этот код
jQuery(document).ready(function(){
jQuery(function() {
jQuery(this).bind("contextmenu", function(event) {
event.preventDefault();
alert('Right click disable in this site!!')
});
});
});
<html>
<head>
<title>Right click disable in web page</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
You write your own code
</body>
</html>
Попробуйте
<script language=JavaScript>
//Disable right mouse click Script
var message="Function Disabled!";
function clickIE4(){
if (event.button==2){
alert(message);
return false;
}
}
function clickNS4(e){
if (document.layers||document.getElementById&&!document.all){
if (e.which==2||e.which==3){
alert(message);
return false;
}
}
}
if (document.layers){
document.captureEvents(Event.MOUSEDOWN);
document.onmousedown=clickNS4;
}
else if (document.all&&!document.getElementById){
document.onmousedown=clickIE4;
}
document.oncontextmenu=new Function("alert(message);return false")
</script>
Отключение правого клика на вашей веб-странице очень просто. Есть всего несколько строк кода JavaScript, которые будут выполнять эту работу. Ниже приведен код JavaScript:
$("html").on("contextmenu",function(e){
return false;
});
В приведенном выше коде я выбрал тег. После того, как вы добавите только три строки кода, он отключит правый щелчок на вашей веб-странице.
Источник: Отключить щелчок правой кнопкой мыши, скопировать, вырезать на веб-странице с помощью jQuery
Я знаю, что опаздываю, но я хочу создать некоторые предположения и объяснения для ответа, который я собираюсь предоставить.
Можно ли отключить правый клик на моей веб-странице без использования Javascript?
Да, с помощью JavaScript вы можете отключить любое событие, которое произойдет, и вы можете сделать это, главным образом, только с помощью javaScript. Как, все, что вам нужно, это:
Рабочее оборудование
Веб-сайт или где-нибудь, из которого вы можете узнать о кодах клавиш. Потому что они вам понадобятся.
Теперь скажем, что вы хотите заблокировать нажатие клавиши ввода, вот код:
function prevententer () {
if(event.keyCode == 13) {
return false;
}
}
Для правого клика используйте это:
event.button == 2
вместо event.keyCode
. И вы его заблокируете.
Я хочу спросить об этом, потому что большинство браузеров позволяют пользователям отключать его с помощью Javascript.
Вы правы, браузеры позволяют использовать JavaScript
, а javascript выполняет всю работу за вас. Вам не нужно ничего настраивать, просто нужен атрибут script в голове.
Главный и быстрый ответ на это будет пользователям не понравится. Все нуждаются в свободе, никто не подразумевает, что никто не хочет быть заблокированным или отключенным, несколько минут назад я был на сайте, который заблокировал меня от щелчка правой кнопкой мыши, и я чувствовал, почему? Нужно ли защищать исходный код? Тогда здесь ctrl+shift+J
я открыл Console
, и теперь я могу перейти на вкладку HTML-code
. Иди и останови меня. Это не добавит ни одного уровня безопасности в ваше приложение.
В правом клике есть много полезных меню, таких как "Копировать", "Вставить", "Искать в Google" для "текста" (в Chrome) и многих других. Таким образом, пользователь хотел бы получить простоту доступа, вместо того чтобы вспоминать много сочетаний клавиш. Любой может копировать контекст, сохранять изображение или делать все, что захочет.
Браузеры используют мышь Навигация: Некоторые браузеры, такие как Opera, используют навигацию для мыши, поэтому, если вы отключите ее, пользователь определенно ненавидит ваш пользовательский интерфейс и скрипты.
Итак, это было основным, я собирался написать еще немного о сохранении исходного кода hehehe, но пусть это будет ответом на ваш вопрос.
Код кнопки и кнопки мыши:
http://www.w3schools.com/jsref/event_button.asp
https://developer.mozilla.org/en-US/docs/Web/API/event.button (также будут оценены пользователями).
Почему бы не отключить правый щелчок:
$(document).ready(function () {
document.oncontextmenu = document.body.oncontextmenu = function () { return false; }
});
Если вы используете jquery, вы можете попробовать этот код:
$(document).bind("contextmenu", function (event) {
event.preventDefault();
));
Проверьте это: http://www.landcoder.com/4-dynamic-interactive-code-snippets-jquery-705#disablerightclick
JavaScript:
document.getElementsByTagName("html")[0].setAttribute("oncontextmenu", "return false");
Отключить правый клик на сайте:
<body oncontextmenu="return false">
или следующий метод:
<style>
body {
-webkit-user-select: none; /* Chrome all / Safari all */
-o-user-select: none;
user-select: none;
-webkit-touch-callout:none;
}
</style>
Важное примечание: это зависит от браузера и ОС, чтобы разрешить такое предотвращение или нет!
Должны ли вы сделать это? Нет Потому что это не помешает пользователю, а просто раздражает его.
Вы можете использовать это? Да Примеры: в некоторых веб-приложениях, где вы хотите иметь настраиваемое всплывающее меню, в игре, где пользователи могут раздражаться, когда по ошибке щелкают правой кнопкой мыши, и другие случаи.
Chrome (v65) в Ubuntu 16.04 = Вы МОЖЕТЕ отключить щелчок правой кнопкой мыши.
Chrome (v65) в Mac OS 10.11 = Вы НЕ МОЖЕТЕ отключить щелчок правой кнопкой мыши.
Chrome (v65) в Windows 7 = ВЫ НЕ МОЖЕТЕ отключить щелчок правой кнопкой мыши.
Firefox (v41) в Mac OS 10.11 = Вы МОЖЕТЕ отключить щелчок правой кнопкой мыши.
Firefox (v43) в Windows 7 = Вы МОЖЕТЕ отключить щелчок правой кнопкой мыши.
// Vanilla JS way
document.addEventListener('contextmenu', function(e){
e.preventDefault();
});
// jQuery way
$(document).bind('contextmenu', function(e) {
e.preventDefault();
});
Используйте эту функцию, чтобы отключить щелчок правой кнопкой мыши. Вы можете отключить щелчок левой кнопкой мыши и нажать также, отметив checking 1 and 0
соответствующие
document.onmousedown = rightclickD;
function rightclickD(e)
{
e = e||event;
console.log(e);
if (e.button == 2) {
//alert('Right click disabled!!!');
return false; }
}