2011-01-20 36 views
62

Tôi muốn biết cách vô hiệu hóa nhấp chuột phải vào hình ảnh bằng cách sử dụng jQuery.Vô hiệu hóa nhấp chuột phải vào hình ảnh bằng cách sử dụng jquery

Tôi biết chỉ này:

<script type="text/javascript" language="javascript"> 
    $(document).ready(function() { 
     $(document).bind("contextmenu",function(e) { 
      return false; 
     }); 
    }); 
</script> 
+3

điều này sẽ hoạt động đôi khi;). Nhưng hãy quên đi, có 100 cách khác để lưu hình ảnh từ web. Nhân tiện, nếu bạn đang chuyển đối tượng đã nhấp, hãy sử dụng nó! http://jsfiddle.net/VZX4A/ – meo

+3

yea tôi biết. Tôi đang làm điều này chỉ để giảm số lượng bản sao hình ảnh. Nó dành riêng cho những người chỉ biết nhấp chuột phải và tiết kiệm tức là người dùng câm. –

+3

Chỉ cần không. Bạn không bảo vệ hình ảnh khỏi bị sao chép và bạn đang tắt chức năng mặc định và mong đợi của trình duyệt. –

Trả lời

133

này hoạt động:

$('img').bind('contextmenu', function(e) { 
    return false; 
}); 

Hoặc cho jQuery mới hơn:

$('#nearestStaticContainer').on('contextmenu', 'img', function(e){ 
    return false; 
}); 

jsFiddle example

+2

nhờ người đàn ông này hoạt động. –

+46

cách mới là: '$ ('body'). On ('contextmenu', 'img', hàm (e) { trả về false; }); 'mặc dù tôi muốn giới thiệu một cái gì đó hẹp hơn 'cơ thể' nếu bạn có thể. – Myster

+1

jQuery với một hai loại trực tiếp một lần nữa. <3 – Foxinni

10

mục đích của bạn vô hiệu hóa là gì click chuột phải . vấn đề với bất kỳ kỹ thuật nào là luôn luôn có cách để đi xung quanh chúng. giao diện điều khiển cho firefox (firebug) và chrome cho phép unbinding của sự kiện đó. hoặc nếu bạn muốn hình ảnh được bảo vệ, người ta luôn có thể xem bộ đệm tạm thời của họ để tìm hình ảnh.

Nếu bạn muốn tạo menu ngữ cảnh của riêng mình, ngăn chặnDefault là tốt. Chỉ cần chọn trận đánh của bạn ở đây. thậm chí không phải là một thư viện JavaScript lớn như tnyMCE hoạt động trên tất cả các trình duyệt ... và đó không phải là vì nó không thể ;-).

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

Cá nhân tôi đang ở trong một Internet mở. Hành vi trình duyệt gốc không bị cản trở bởi các tương tác trang. Tôi chắc chắn rằng các cách khác có thể được tìm thấy để tương tác không phải là nhấp chuột phải.

+2

-1. Không phải là câu trả lời cho câu hỏi. – richsage

+0

thay đổi để phù hợp hơn như làm rõ – yopefonic

7

Đối Disable Right Click Tùy chọn

<script type="text/javascript"> 
    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> 
+2

Đạo cụ cho phiên bản Javascript thuần túy, nhưng OP yêu cầu cho jQuery. –

+0

Và mã trên là từ cuối những năm 90, – mplungjan

2

Nó sẽ có thể rời khỏi khả năng nhấp chuột phải và tải về chỉ khi thực hiện xong một watermark riêng biệt được đặt trên hình ảnh. Tất nhiên điều này sẽ không ngăn chặn ảnh chụp màn hình nhưng nghĩ rằng nó có thể là một nền tảng trung bình tốt.

7

Trong chrome và firefox, các phương pháp trên không hiệu quả trừ khi tôi sử dụng 'live' thay vì 'bind'.

này đã làm việc cho tôi:

$('img').live('contextmenu', function(e){ 
    return false; 
}); 
+2

Nó hoạt động với "cách mới" được đề cập bởi @Myster –

1

Bạn có thể thử này:

var message="Sorry, right-click has been disabled"; 

function clickIE() { 
    if (document.all) { 
     (message); 
     return false; 
    } 
} 

function clickNS(e) { 
    if (document.layers || (document.getElementById && !document.all)) { 
     if (e.which == 2||e.which == 3) { 
      (message); 
      return false; 
     } 
    } 
} 

if (document.layers) { 
    document.captureEvents(Event.MOUSEDOWN); 
    document.onmousedown = clickNS; 
} else { 
    document.onmouseup = clickNS; 
    document.oncontextmenu = clickIE; 
} 

document.oncontextmenu = new Function("return false") 

Checkout a demo here

1

Một cách rất đơn giản là thêm hình ảnh làm nền cho một DIV sau đó tải một gif trống trong suốt được đặt thành cùng kích thước với DIV ở nền trước. mà giữ ít được xác định. Họ không thể có được nền mà không xem mã và sao chép URL và nhấp chuột phải chỉ cần tải gif trong suốt.

Các vấn đề liên quan