Làm cách nào để vô hiệu hóa nhấp chuột phải vào trang web của tôi?


316

Tôi có thể tắt nhấp chuột phải vào trang web của mình mà không cần sử dụng JavaScript không? Tôi yêu cầu điều này bởi vì hầu hết các trình duyệt cho phép người dùng vô hiệu hóa JavaScript.

Nếu không, làm cách nào để sử dụng JavaScript để tắt nhấp chuột phải?


130
Vô hiệu hóa nhấp chuột phải không bảo mật, nó chỉ gây khó chịu cho người dùng của bạn. Bất kỳ trình duyệt nào không cho phép bạn vô hiệu hóa điều này là vô ích, nhưng các trang web thực hiện nó ở vị trí đầu tiên là rất tệ.
Dan Olson

17
Nếu bạn không muốn nội dung của bạn được thực hiện, bạn không nên đăng nó trên web. :) Các trình duyệt hiện đại thậm chí có thể ghi đè khả năng của JavaScript để vô hiệu hóa nhấp chuột phải. Các công cụ như Thanh công cụ Firebird / Web Dev giúp bảo vệ vô dụng.
eprebello

7
đây là một tập lệnh người dùng chrome / greesemonkey nhỏ để kích hoạt lại nhấp chuột phải: dl.dropbox.com/u/464119/Programming/javascript/iêu
ripper234

31
Thực sự @DanOlson ... bạn phải làm gì nếu muốn mã hóa menu nhấp chuột phải của riêng mình? Chẳng hạn như được tìm thấy trong cPanel.
Codmith

30
@eprebello có một số trường hợp nhất định vô hiệu hóa nhấp chuột phải là điều cần thiết, như trên các thiết bị đầu cuối kiosk, người dùng bceause thực sự không cần nó ở đó và để nó ở đó thực sự có thể gây khó chịu cho người dùng
Aram

Câu trả lời:


525

Bạn có thể làm điều đó với JavaScript bằng cách thêm một trình lắng nghe sự kiện cho sự kiện "bối cảnh" và gọi preventDefault()phương thức:

document.addEventListener('contextmenu', event => event.preventDefault());

Điều đó đang được nói: ĐỪNG LÀM NÓ.

Tại sao? Bởi vì nó đạt được không có gì ngoài người dùng gây phiền nhiễu. Ngoài ra, nhiều trình duyệt có tùy chọn bảo mật để không cho phép vô hiệu hóa menu nhấp chuột phải (ngữ cảnh).

Không chắc chắn tại sao bạn muốn. Nếu không tin tưởng rằng bạn có thể bảo vệ mã nguồn hoặc hình ảnh theo cách đó, hãy nghĩ lại: bạn không thể.


86
Sử dụng oncontextmenu="return false"trên một cái gì đó khác ngoài cơ thể có thể có ý nghĩa, ví dụ trên một bức vẽ.
AdrienBrault

62
Chúng tôi đang triển khai trên các máy kiosk và chọn cách này để vô hiệu hóa người dùng làm mới trang.
Todd Horst

21
@ToddHorst trong trường hợp đó tôi sẽ sử dụng phiên bản "Kiosk" đặc biệt của trình duyệt mà không có bất kỳ giao diện người dùng nào, thường có sẵn mà không có bất kỳ menu ngữ cảnh nào :)
mihi

17
Các hệ thống hỗ trợ cảm ứng đôi khi ánh xạ các sự kiện chạm nhất định, chẳng hạn như chạm lâu, vào nhấp chuột phải (và do đó mở menu ngữ cảnh). Tuy nhiên, hành vi này có thể là không mong muốn và cách duy nhất có ý nghĩa để ngăn chặn nó dường như là vô hiệu hóa hoàn toàn menu ngữ cảnh.
HOẶC Mapper

58
Old Thread nhưng trong trường hợp ai đó đọc nó, không phải tất cả các nhà phát triển web tự tạo trang web của họ đôi khi khách hàng tìm đến bạn và khăng khăng vô hiệu hóa nhấp chuột phải, khi bạn cố gắng thuyết phục anh ta, anh ta sẽ tìm một nhà phát triển khác sẽ làm điều đó không do dự
Danny22

122

KHÔNG

Chỉ là, đừng.

Bất kể bạn làm gì, bạn không thể ngăn người dùng truy cập đầy đủ vào mọi bit dữ liệu trên trang web của bạn. Bất kỳ Javascript nào bạn viết mã đều có thể được hiển thị bằng cách tắt Javascript trên trình duyệt (hoặc sử dụng plugin như NoScript). Ngoài ra, không có cách nào để vô hiệu hóa khả năng của bất kỳ người dùng nào chỉ đơn giản là "xem nguồn" hoặc "xem thông tin trang" (hoặc sử dụng wget) cho trang web của bạn.

Nó không đáng để nỗ lực. Nó sẽ không thực sự hoạt động. Nó sẽ làm cho trang web của bạn tích cực thù địch với người dùng. Họ sẽ nhận thấy điều này và dừng tham quan. Không có lợi ích để làm điều này, chỉ lãng phí nỗ lực và mất lưu lượng.

Đừng.

Cập nhật: Có vẻ như chủ đề nhỏ này đã được chứng minh khá gây tranh cãi theo thời gian. Mặc dù vậy, tôi đứng trước câu trả lời cho câu hỏi này. Đôi khi câu trả lời đúng là lời khuyên thay vì trả lời theo nghĩa đen.

Những người vấp phải câu hỏi này với hy vọng tìm ra cách tạo menu ngữ cảnh tùy chỉnh nên tìm ở nơi khác, chẳng hạn như những câu hỏi sau:


230
Wow tôi không thể tin rằng đây là một câu trả lời được chấp nhận. Có nhiều cách sử dụng hợp lệ để loại bỏ nhấp chuột phải trong ứng dụng web trong các điều kiện cụ thể.
GAgnew

84
Câu trả lời thực sự nên là:<body oncontextmenu="return false;">
Sebastián Grignoli

18
@GAgnew: Có những cách sử dụng hợp lệ để thay thế menu ngữ cảnh. Không có người dùng hợp lệ để vô hiệu hóa quyền bấm vô điều kiện và không xử lý chúng theo cách hữu
ích-

80
Nếu người dùng muốn tạo một trò chơi điện tử HTML5, việc vô hiệu hóa nhấp chuột phải có thể khá hữu ích. Thông thường, điều này là không mong muốn, nhưng chỉ nói "KHÔNG" mà không có ngữ cảnh phù hợp là không hữu ích.
Robson França

51
-1 từ tôi cũng vậy. Câu trả lời này không hữu ích. Có rất nhiều lý do tốt để vô hiệu hóa nhấp chuột phải. Ví dụ: tôi đã tạo một ứng dụng web mà các bệnh viện sử dụng ở quầy lễ tân và người dùng không am hiểu về kỹ thuật. Mặc dù ứng dụng đang chạy trong trình duyệt web của họ, họ không hiểu tại sao tất cả các tùy chọn menu xuất hiện khi họ nhấp chuột phải. Chúng tôi nhận được vô số câu hỏi trợ giúp hỏi chúng tôi các tùy chọn dành cho ai, từ những người nghĩ rằng chúng là một phần của ứng dụng. Vô hiệu hóa chúng có ý nghĩa trong trường hợp đó và trong nhiều ứng dụng web khác.
Nicholas

66

Câu hỏi ban đầu là về cách dừng nhấp chuột phải để người dùng có thể vô hiệu hóa JavaScript : nghe có vẻ bất chính và xấu xa (do đó phản hồi tiêu cực) - nhưng tất cả các bản sao đều chuyển hướng ở đây, mặc dù nhiều bản sao đang yêu cầu ít mục đích xấu hơn.

Ví dụ như sử dụng nút chuột phải trong các trò chơi HTML5. Điều này có thể được thực hiện với mã nội tuyến ở trên, hoặc đẹp hơn một chút là như thế này:

document.addEventListener("contextmenu", function(e){
    e.preventDefault();
}, false);

Nhưng nếu bạn đang làm cho một trò chơi, sau đó hãy nhớ rằng các nút chuột phải bắn các ContextMenu sự kiện - nhưng nó cũng bắn thường xuyên mousedownMouseUp sự kiện quá. Vì vậy, bạn cần phải kiểm tra các sự kiện tài sản để xem nếu nó là trái (mà === 1), giữa (mà === 2), hoặc phải nút (mà === 3) chuột được bắn sự kiện này.

Đây là một ví dụ trong jQuery - lưu ý rằng việc nhấn nút chuột phải sẽ kích hoạt ba sự kiện: sự kiện mousedown, sự kiện bối cảnh và sự kiện 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); 
    }
});

Vì vậy, nếu bạn đang sử dụng các nút chuột trái và phải trong trò chơi, bạn sẽ phải thực hiện một số logic có điều kiện trong trình xử lý chuột.


Nếu tôi đã kích hoạt dom.event.contextmenu.enabledtrong Firefox, các sự kiện mousedownmouseupsự kiện vẫn sẽ kích hoạt ngay cả khi contextmenukhông?
robertc

43

Nếu bạn không quan tâm đến việc cảnh báo người dùng bằng một tin nhắn mỗi khi họ cố gắng nhấp chuột phải, hãy thử thêm nó vào thẻ cơ thể của bạn

<body oncontextmenu="return false;">

Điều này sẽ chặn tất cả quyền truy cập vào menu ngữ cảnh (không chỉ từ nút chuột phải mà cả bàn phím).

Tuy nhiên, như đã đề cập trong các câu trả lời khác, thực sự không có điểm nào thêm một trình giải mã nhấp chuột phải. Bất cứ ai có kiến ​​thức trình duyệt cơ bản đều có thể xem nguồn và trích xuất thông tin họ cần.


Có, nhưng có những lúc tôi muốn chia sẻ ngắn gọn một hình ảnh với người mà tôi biết là thiếu kiến ​​thức trình duyệt cơ bản. Vô hiệu hóa nhấp chuột phải không phải là 100% hoàn hảo, nhưng nếu tôi đăng hình ảnh chỉ trong vài phút để cho người đó có một cái nhìn, nó khá an toàn.
WillO

Các hệ thống hỗ trợ cảm ứng đôi khi ánh xạ các sự kiện chạm nhất định, chẳng hạn như chạm lâu, vào nhấp chuột phải (và do đó mở menu ngữ cảnh). Tuy nhiên, hành vi này có thể là không mong muốn và cách duy nhất có ý nghĩa để ngăn chặn nó dường như là vô hiệu hóa hoàn toàn menu ngữ cảnh.
HOẶC Mapper

@WillO: Tôi có một trường hợp sử dụng tương tự tôi cần để phục vụ, nhưng FYI, người dùng sẽ luôn dùng đến ảnh chụp màn hình .
Hassan Baig

28

Nếu bạn là một người hâm mộ cuồng nhiệt, hãy sử dụng cái này

    $(function() {
        $(this).bind("contextmenu", function(e) {
            e.preventDefault();
        });
    }); 

4
Đây là sử dụng jQuery không có lý do. Điều này thực hiện giống hệt như tuyên bố JavaScript duy nhất được tìm thấy trong câu trả lời của ông Nói, đã được đăng 1 năm rưỡi trước đó. Nhân tiện, câu trả lời đó cũng bao gồm một giải pháp jQuery, một lần nữa bạn không cần. Có ai đã nêu lên câu trả lời này thậm chí biết điều này không? Tại sao điều này chờ đợi sự kiện sẵn sàng tài liệu ngừng ngăn menu ngữ cảnh xuất hiện? Tại sao điều này sử dụng thisbên trong sự kiện đã sẵn sàng? Tại sao bạn sử dụng bindthay vì on? Ừ ...
Rudey

20

Đầu tiên, bạn không thể đạt được điều này mà không sử dụng khả năng phía máy khách. Đây là nơi javascript chạy.

Thứ hai, nếu bạn đang cố gắng kiểm soát những gì người dùng cuối có thể tiêu thụ từ trang web của bạn, thì bạn cần suy nghĩ lại về cách bạn hiển thị thông tin đó. Một hình ảnh có một url công khai có thể được tìm nạp qua HTTP mà không cần trình duyệt.

Xác thực có thể kiểm soát ai có quyền truy cập vào tài nguyên nào.

Hình mờ được nhúng trong hình ảnh có thể chứng minh rằng hình ảnh đó là của một người / công ty cụ thể.

Vào cuối ngày, quản lý tài nguyên thực sự là quản lý người dùng / khách.

Quy tắc đầu tiên của Internet, nếu bạn không muốn nó được thực hiện, đừng công khai nó!

Quy tắc thứ hai của Internet, nếu bạn không muốn thực hiện, đừng đưa nó lên Internet!


20

Nếu mục đích của bạn là ngăn mọi người có thể tải xuống hình ảnh của bạn, như hầu hết mọi người đã nói, việc vô hiệu hóa nhấp chuột phải là không hiệu quả.

Giả sử bạn đang cố gắng bảo vệ hình ảnh, các phương pháp thay thế là -

Sử dụng trình phát flash, người dùng không thể tải xuống như vậy, nhưng họ có thể dễ dàng chụp ảnh màn hình.

Nếu bạn muốn trở nên linh hoạt hơn, hãy làm cho hình ảnh trở thành nền của một div, chứa một hình ảnh trong suốt, à la -

<div style="background-image: url(YourImage.jpg);">
   <img src="transparent.gif"/>
</div>

sẽ đủ để ngăn chặn hành vi trộm cắp hình ảnh thông thường của bạn (xem bên dưới để lấy mẫu), nhưng như với tất cả các kỹ thuật này, là tầm thường để đánh bại với sự hiểu biết cơ bản về html.


2
Bạn thậm chí có thể tải hình ảnh dưới dạng base64, để làm xáo trộn thêm mã.
Miguel Bartelsman

16

Bạn không thể thực hiện những gì bạn yêu cầu mà không sử dụng Javascript. Bất kỳ công nghệ nào khác bạn có thể chọn sử dụng chỉ có thể giúp soạn trang web ở phía máy chủ được gửi tới trình duyệt.

Đơn giản là không có giải pháp tốt và không có thời gian giải pháp nếu không có Javascript.


1
Và thậm chí sau đó nó gây khó chịu cho người dùng, chưa kể dễ bỏ qua.
Manos Dilaverakis

1
Tôi chỉ từng thấy các trang có cửa sổ bật lên phương thức có nội dung 'nhấp chuột phải bị vô hiệu hóa', sau đó hiển thị menu nhấp chuột phải khi bạn loại bỏ nó. Chúng cũng hiển thị thông báo khi bạn cuộn bằng trackpad, điều này rất khó chịu.
Pete Kirkham

1
Phải, điều này đặc biệt khó chịu vì thường là để ngăn mọi người "đánh cắp" những hình ảnh đã có trên ổ cứng của họ, nhưng tất cả những điều đó là ngăn tôi sử dụng Tìm kiếm bối cảnh: addons.mozilla.org/en-US/firefox/addon/240 . Những tên khốn đó ...
Calvin

2
Tôi thích cách mà hầu hết mọi câu trả lời cho điều này là "Chắc chắn, sử dụng javascript!"
Charles Wood

14

Nếu mục tiêu của bạn là không cho phép người dùng chỉ lưu hình ảnh của bạn, bạn cũng có thể kiểm tra xem mục tiêu được nhấp có phải là hình ảnh hay không, chỉ vô hiệu hóa nhấp chuột phải trong trường hợp đó. Vì vậy, nhấp chuột phải có thể được sử dụng cho các mục đích khác. Lấy từ đoạn mã trên:

document.addEventListener("contextmenu", function(e){
    if (e.target.nodeName === "IMG") {
        e.preventDefault();
    }
}, false);

Đây chỉ là để lấy đi cách dễ nhất để lưu hình ảnh của bạn, nhưng nó vẫn có thể được thực hiện.


Theo ý kiến ​​của tôi, đây là cách tốt nhất - với tư cách là một người dùng web, tôi thấy chức năng nhấp chuột phải hữu ích theo thời gian nhưng là một giải pháp dễ dàng, đơn giản (và có, dễ bị đánh bại), điều này hoạt động mà không gây khó chịu.
Ben

9
<!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>



2
@ aravind3 Tôi đã sử dụng ví dụ của bạn và nó có tác dụng! Hình ảnh của tôi vẫn có thể nhấp và hoạt động theo cách chúng được yêu cầu, nhưng không thể tải xuống. Lý do tôi muốn tắt nhấp chuột phải là khách truy cập chỉ muốn một hình ảnh và sau đó rời đi ngay lập tức đang ảnh hưởng đến tỷ lệ thoát của tôi. Ít nhất là theo cách này, tỷ lệ thoát của tôi sẽ không tệ lắm, vì có thể họ sẽ mất 1 hoặc 2 phút để tìm ra nó :) Chúc mừng aravind3 !!!!
coolydude

6

Làm như dưới đây (Nó cũng hoạt động trên firefox):

$(document).on("contextmenu",function(e){

     if( e.button == 2 ) {
         e.preventDefault();
          callYourownFucntionOrCodeHere();
     }
return true;
});

5

Đặt mã này vào <head>thẻ của trang của bạn.

<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>

Điều này sẽ vô hiệu hóa nhấp chuột phải trên toàn bộ trang web của bạn, nhưng chỉ khi JavaScript được bật.


Điều này không hoạt động trên firefox, nó vô hiệu hóa lựa chọn đầu vào cho các hình thức gõ :(
ALWAN

5

Tôi đã sử dụng mã này để vô hiệu hóa nhấp chuột phải trong bất kỳ trang web nào, nó hoạt động tốt. Bạn có thể sử dụng mã này

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>


4

Tất nhiên, theo tất cả các ý kiến ​​khác ở đây, điều này chỉ đơn giản là không hoạt động.

Tôi đã từng xây dựng một applet java đơn giản cho một máy khách buộc phải thực hiện bất kỳ việc chụp ảnh nào thông qua chụp màn hình và bạn có thể muốn xem xét một kỹ thuật tương tự. Nó đã làm việc, trong giới hạn, nhưng tôi vẫn nghĩ rằng đó là một sự lãng phí thời gian.


4
    <script>
        window.oncontextmenu = function () {
            console.log("Right Click Disabled");
            return false;
        }
    </script>

3

Thử cái này

<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>

3

Vô hiệu hóa nhấp chuột phải vào trang web của bạn là đơn giản. Chỉ có một vài dòng mã JavaScript sẽ thực hiện công việc này. Dưới đây là mã JavaScript:

$("html").on("contextmenu",function(e){
   return false;
});

Trong đoạn mã trên, tôi đã chọn thẻ. Sau khi bạn thêm ba dòng mã đó, nó sẽ vô hiệu hóa nhấp chuột phải vào trang web của bạn.

Nguồn: Vô hiệu hóa nhấp chuột phải, sao chép, cắt trên trang web bằng jQuery


2
 $(document).ready(function () {
            document.oncontextmenu = document.body.oncontextmenu = function () { return false; }
        });

2

Tôi biết tôi đến trễ, nhưng tôi muốn tạo ra một số giả định và giải thích cho câu trả lời tôi sẽ cung cấp.

Tôi có thể tắt nhấp chuột phải không

Tôi có thể tắt nhấp chuột phải vào trang web của mình mà không cần sử dụng Javascript không?

Có, bằng cách sử dụng JavaScript, bạn có thể vô hiệu hóa bất kỳ sự kiện nào xảy ra và bạn có thể làm điều đó chủ yếu chỉ bằng javaScript. Làm thế nào, tất cả những gì bạn cần là:

  1. Một phần cứng làm việc

  2. Một trang web hoặc một nơi nào đó mà bạn có thể tìm hiểu về các mã khóa. Bởi vì bạn sẽ cần chúng.

Bây giờ hãy nói rằng bạn muốn chặn phím enter, nhấn vào đây là mã:

function prevententer () {
 if(event.keyCode == 13) {
  return false;
 }
}

Đối với nhấp chuột phải sử dụng này:

event.button == 2

trong nơi event.keyCode. Và bạn sẽ chặn nó.

Tôi muốn hỏi điều này bởi vì hầu hết các trình duyệt cho phép người dùng vô hiệu hóa nó bằng Javascript.

Bạn nói đúng, trình duyệt cho phép bạn sử dụng JavaScriptvà javascript thực hiện toàn bộ công việc cho bạn. Bạn không cần phải thiết lập bất cứ điều gì, chỉ cần thuộc tính script trong đầu.

Tại sao bạn không nên vô hiệu hóa nó?

Câu trả lời chính và nhanh cho điều đó sẽ là, người dùng sẽ không thích nó . Mọi người đều cần sự tự do, không có ai, ý tôi là không ai muốn bị chặn hoặc vô hiệu hóa, vài phút trước tôi đã ở một trang web, điều đó đã chặn tôi nhấp chuột phải và tôi cảm thấy tại sao? Bạn có cần phải bảo mật mã nguồn của bạn? Sau đó, ở đây ctrl+shift+Jtôi đã mở Consolevà bây giờ tôi có thể đi đến HTML-codetab. Hãy tiếp tục và ngăn chặn tôi. Điều này sẽ không thêm bất kỳ lớp bảo mật nào vào ứng dụng của bạn.

Có rất nhiều menu người dùng trong Nhấp chuột phải, như Sao chép, Dán, Tìm kiếm Google cho 'văn bản' (Trong Chrome) và nhiều hơn nữa. Vì vậy, người dùng muốn có được quyền truy cập dễ dàng thay vì nhớ rất nhiều phím tắt. Bất cứ ai vẫn có thể sao chép bối cảnh, lưu hình ảnh hoặc làm bất cứ điều gì mình muốn.

Trình duyệt sử dụng Điều hướng chuột: Một số trình duyệt như Opera sử dụng điều hướng chuột, vì vậy nếu bạn tắt nó, người dùng chắc chắn sẽ ghét Giao diện người dùng và tập lệnh của bạn.

Vì vậy, đó là điều cơ bản, tôi sẽ viết thêm một số về việc lưu mã nguồn hehehe nhưng, hãy để nó là câu trả lời cho câu hỏi của bạn.

Tham chiếu đến các mã khóa:

Mã phím và nút chuột:

http://www.w3schools.com/jsref/event_button.asp

https://developer.mozilla.org/en-US/docs/Web/API/event.button (cũng sẽ được người dùng đánh giá cao).

Tại sao không tắt nhấp chuột phải:

http://www.sitepoint.com/dont-disable-right-click/


1

Javascript:

document.getElementsByTagName("html")[0].setAttribute("oncontextmenu", "return false"); 

0

Lưu ý quan trọng: Tùy thuộc vào trình duyệtHĐH có cho phép phòng ngừa như vậy hay không!

Bạn có nên làm điều đó? Không . Bởi vì nó sẽ không ngăn cản người dùng, nhưng nó sẽ chỉ làm phiền anh ấy / cô ấy.

Bạn có thể dùng nó không? . Ví dụ: Trong một số ứng dụng web nơi bạn muốn có menu bật lên tùy chỉnh, trong trò chơi, nơi người dùng có thể khó chịu khi bấm nhầm họ nhấp chuột phải và các trường hợp khác.

Chrome (v65) trong Ubuntu 16.04 = Bạn CÓ THỂ tắt nhấp chuột phải.

Chrome (v65) trong Mac OS 10.11 = Bạn KHÔNG THỂ tắt nhấp chuột phải.

Chrome (v65) trong Windows 7 = Bạn KHÔNG THỂ tắt nhấp chuột phải.

Firefox (v41) trong Mac OS 10.11 = Bạn CÓ THỂ tắt nhấp chuột phải.

Firefox (v43) trong Windows 7 = Bạn CÓ THỂ tắt nhấp chuột phải.

// Vanilla JS way
document.addEventListener('contextmenu', function(e){
    e.preventDefault();
});

// jQuery way
$(document).bind('contextmenu', function(e) {
    e.preventDefault();
});

0

Một vài điều cần xem xét:

Các plugin Trình duyệt như "kích hoạt nhấp chuột phải" trong cửa hàng chrome tồn tại vì một lý do và bạn sẽ không thể có được xung quanh chúng. Bạn không thể làm gì để ngăn mọi người tải xuống nội dung của bạn vì họ thực sự phải tải xuống để thậm chí nhìn thấy nó trong trình duyệt của họ; Mọi người cố gắng nhưng nó luôn ở ngoài đó.

Nói chung, nếu nội dung không được công khai, đừng đưa nó lên mạng.

Ngoài ra, không thể nhấp chuột phải là một vấn đề tiếp cận và dẫn đến sự phân biệt đối xử bất hợp pháp đối với người mù hoặc người khuyết tật hoặc người già trong nhiều trường hợp. Kiểm tra luật pháp địa phương của bạn, nhưng tại Hoa Kỳ, nó tích cực chống lại luật pháp dưới hình thức ADA Liên bang vì người mù hoặc người già có thể có vấn đề về thị lực là một lớp được bảo vệ hợp pháp.

Vì vậy, thay vì làm điều này và lãng phí rất nhiều thời gian và công sức, thậm chí đừng bận tâm cố gắng làm điều này. Nó có thể khiến công ty của bạn bị kiện hoặc họ không thực hiện kiểm toán tuân thủ.


0

Hãy thử mã này để vô hiệu hóa tùy chọn kiểm tra phần tử

    jQuery(document).ready(function() {
    function disableSelection(e) {
        if (typeof e.onselectstart != "undefined") e.onselectstart = function() {
            return false
        };
        else if (typeof e.style.MozUserSelect != "undefined") e.style.MozUserSelect = "none";
        else e.onmousedown = function() {
            return false
        };
        e.style.cursor = "default"
    }
    window.onload = function() {
        disableSelection(document.body)
    };

    window.addEventListener("keydown", function(e) {
        if (e.ctrlKey && (e.which == 65 || e.which == 66 || e.which == 67 || e.which == 70 || e.which == 73 || e.which == 80 || e.which == 83 || e.which == 85 || e.which == 86)) {
            e.preventDefault()
        }
    });
    document.keypress = function(e) {
        if (e.ctrlKey && (e.which == 65 || e.which == 66 || e.which == 70 || e.which == 67 || e.which == 73 || e.which == 80 || e.which == 83 || e.which == 85 || e.which == 86)) {}
        return false
    };

    document.onkeydown = function(e) {
        e = e || window.event;
        if (e.keyCode == 123 || e.keyCode == 18) {
            return false
        }
    };

    document.oncontextmenu = function(e) {
        var t = e || window.event;
        var n = t.target || t.srcElement;
        if (n.nodeName != "A") return false
    };
    document.ondragstart = function() {
        return false
    };
});

1
Cảm ơn bạn vì đoạn mã này, có thể cung cấp một số trợ giúp ngắn hạn. Một lời giải thích phù hợp sẽ cải thiện đáng kể giá trị lâu dài của nó bằng cách chỉ ra lý do tại sao đây là một giải pháp tốt cho vấn đề và sẽ giúp nó hữu ích hơn cho những người đọc tương lai với những câu hỏi tương tự khác. Vui lòng chỉnh sửa câu trả lời của bạn để thêm một số giải thích, bao gồm các giả định bạn đã thực hiện.
Toby Speight

Điều này có thể cực kỳ dễ dàng để ghi đè trong Chrome: Nhấp vào 3 dấu chấm bên cạnh ảnh đại diện của bạn> Công cụ khác> Công cụ dành cho nhà phát triển
sportzpikachu

-1

Sử dụng chức năng này để vô hiệu hóa nhấp chuột phải. Bạn có thể vô hiệu hóa nhấp chuột trái và nhấn cũng bằng cách checking 1 and 0tương ứng

document.onmousedown = rightclickD;
            function rightclickD(e) 
            { 
                e = e||event;
                console.log(e);
                if (e.button == 2) {
                //alert('Right click disabled!!!'); 
                 return false; }
            }

Sử dụng Javascript để làm những gì HTML đã làm là kỹ thuật tồi và lãng phí
trung thực
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.