ฉันจะปิดการใช้งานการคลิกขวาบนหน้าเว็บของฉันได้อย่างไร


316

ฉันสามารถปิดใช้งานการคลิกขวาบนหน้าเว็บของฉันโดยไม่ใช้ JavaScript ได้หรือไม่? ฉันถามสิ่งนี้เพราะเบราว์เซอร์ส่วนใหญ่อนุญาตให้ผู้ใช้ปิดการใช้งาน JavaScript

ถ้าไม่ฉันจะใช้ JavaScript เพื่อปิดการคลิกขวาได้อย่างไร


130
การปิดใช้งานการคลิกขวานั้นไม่ใช่เรื่องความปลอดภัย แต่เป็นเรื่องที่น่ารำคาญสำหรับผู้ใช้ของคุณ เบราว์เซอร์ใด ๆ ที่ไม่ยอมให้คุณปิดการใช้งานสิ่งนี้จะไร้ค่า แต่เว็บไซต์ที่ทำในตอนแรกนั้นแย่มาก
Dan Olson

17
หากคุณไม่ต้องการให้นำเนื้อหาของคุณไปใช้คุณไม่ควรโพสต์ไว้บนเว็บ :) เบราว์เซอร์ยุคใหม่สามารถแทนที่ความสามารถของ JavaScript ในการปิดการคลิกขวา เครื่องมือเช่น Firebug / Web Dev Toolbar ทำให้การป้องกันไร้ประโยชน์
epascarello

7
นี่คือสคริปต์ผู้ใช้ chrome / greesemonkey ขนาดเล็กเพื่อเปิดใช้งานการคลิกขวาอีกครั้ง: dl.dropbox.com/u/464119/Programming/javascript/…
ripper234

31
@DanOlson จริง ๆ ... คุณควรทำอย่างไรถ้าคุณต้องการรหัสเมนูคลิกขวาของคุณเอง? เช่นที่พบใน cPanel
Codesmith

30
@epascarello มีบางกรณีที่การปิดใช้งานการคลิกขวานั้นเป็นสิ่งที่จำเป็นเช่นในเทอร์มินัลคีออสเพราะผู้ใช้ไม่จำเป็นต้องใช้มันและทิ้งไว้ที่นั่นอาจทำให้ผู้ใช้เกิดความรำคาญ
Aram

คำตอบ:


525

คุณสามารถทำได้ด้วย JavaScript โดยเพิ่มตัวฟังเหตุการณ์สำหรับเหตุการณ์ "contextmenu" และเรียกใช้preventDefault()เมธอด:

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

ที่ถูกกล่าวว่า: ไม่ได้ทำมัน

ทำไม? เพราะมันไม่ได้ทำอะไรนอกจากผู้ใช้ที่น่ารำคาญ เบราว์เซอร์จำนวนมากยังมีตัวเลือกด้านความปลอดภัยที่ไม่อนุญาตให้ปิดใช้งานเมนูคลิกขวา (บริบท) ต่อไป

ไม่แน่ใจว่าทำไมคุณต้องการ หากไม่มีความเชื่อผิดที่คุณสามารถป้องกันซอร์สโค้ดหรือรูปภาพของคุณในลักษณะนั้นลองคิดใหม่: คุณทำไม่ได้


86
การใช้งานoncontextmenu="return false"อย่างอื่นที่ไม่ใช่ร่างกายอาจเข้าท่าเช่นบนผืนผ้าใบ
AdrienBrault

62
เรากำลังปรับใช้บนเครื่องคีออสก์และเลือกวิธีนี้เพื่อปิดการใช้งานผู้ใช้จากการรีเฟรชหน้า
Todd Horst

21
@ToddHorst ในกรณีที่ฉันต้องการใช้พิเศษ "ป้อม" รุ่นของเบราว์เซอร์โดยไม่ต้อง UI ใด ๆ ซึ่งมักจะยังมีอยู่โดยไม่ต้องเมนูบริบทใด ๆ :)
mihi

17
บางครั้งระบบที่เปิดใช้งานระบบสัมผัสจะแมปเหตุการณ์การสัมผัสบางอย่างเช่นการแตะยาว ๆ เพื่อคลิกขวา (และเป็นการเปิดเมนูบริบท) อย่างไรก็ตามพฤติกรรมนี้อาจไม่พึงประสงค์และเป็นวิธีเดียวที่มีความหมายในการป้องกันไม่ให้ปิดการใช้งานเมนูบริบทโดยสิ้นเชิง
หรือผู้ทำแผนที่

58
เธรดเก่า แต่ในกรณีที่มีคนอ่านไม่ได้นักพัฒนาเว็บทั้งหมดทำเว็บไซต์ของตัวเองบางครั้งลูกค้ามาหาคุณและยืนยันในการปิดการใช้งานคลิกขวาเมื่อคุณพยายามโน้มน้าวเขาเขาก็จะมองหานักพัฒนาอื่นที่จะทำมัน โดยไม่ลังเล
Danny22

123

ไม่

แค่อย่า

ไม่ว่าคุณจะทำอะไรคุณไม่สามารถป้องกันผู้ใช้จากการเข้าถึงข้อมูลทุกส่วนในเว็บไซต์ของคุณ โค้ดจาวาสคริปต์ใด ๆ ที่คุณสามารถแสดงผลได้โดยเพียงแค่ปิด Javascript บนเบราว์เซอร์ (หรือใช้ปลั๊กอินเช่น NoScript) นอกจากนี้ไม่มีวิธีปิดการใช้งานความสามารถของผู้ใช้เพียงแค่ "ดูแหล่งที่มา" หรือ "ดูข้อมูลหน้าเว็บ" (หรือใช้ wget) สำหรับเว็บไซต์ของคุณ

มันไม่คุ้มค่ากับความพยายาม มันจะไม่ทำงานจริง ๆ มันจะทำให้เว็บไซต์ของคุณเป็นศัตรูกับผู้ใช้ พวกเขาจะสังเกตเห็นสิ่งนี้และหยุดการเยี่ยมชม ไม่มีประโยชน์ในการทำเช่นนี้เพียงสูญเสียความพยายามและสูญเสียการเข้าชมเท่านั้น

อย่า

อัปเดต:ดูเหมือนว่าหัวข้อเล็ก ๆ นี้ได้พิสูจน์แล้วว่ามีการโต้เถียงกันอยู่ตลอดเวลา ถึงกระนั้นฉันยังคงยืนหยัดอยู่กับคำตอบของคำถามนี้ บางครั้งคำตอบที่ถูกต้องคือคำแนะนำแทนที่จะเป็นคำตอบที่แท้จริง

ผู้ที่สะดุดกับคำถามนี้ด้วยความหวังว่าจะทราบวิธีการสร้างเมนูบริบทที่กำหนดเองควรดูที่อื่นเช่นคำถามเหล่านี้:


229
ว้าวฉันไม่อยากจะเชื่อเลยว่านี่เป็นคำตอบที่ได้รับการยอมรับ มีการใช้ที่ถูกต้องมากมายเพื่อลบคลิกขวาใน webapp ภายใต้เงื่อนไขที่เฉพาะเจาะจง
GAgnew

84
คำตอบที่แท้จริงควรเป็น:<body oncontextmenu="return false;">
Sebastián Grignoli

18
@GAgnew: มีการใช้ที่ถูกต้องเพื่อแทนที่เมนูบริบท ไม่มีผู้ใช้ที่ถูกต้องที่จะปิดการใช้งานคลิกขวาอย่างไม่มีเงื่อนไขและไม่มีการจัดการพวกเขาในทางที่เป็นประโยชน์
ThiefMaster

80
หากผู้ใช้ต้องการสร้างวิดีโอเกม HTML5 การปิดใช้งานการคลิกขวาอาจมีประโยชน์ทีเดียว โดยปกติแล้วสิ่งนี้ไม่เป็นที่ต้องการ แต่เพียงแค่พูดว่า "ไม่ได้" โดยไม่มีบริบทที่เหมาะสมก็ไม่ได้มีประโยชน์
Robson França

51
-1 จากฉันเช่นกัน คำตอบนี้ไม่เป็นประโยชน์ มีเหตุผลที่ดีมากมายที่จะปิดใช้งานการคลิกขวา ตัวอย่างเช่นฉันสร้างเว็บแอปพลิเคชันที่โรงพยาบาลใช้ที่แผนกต้อนรับส่วนหน้าและผู้ใช้ไม่เข้าใจในทางเทคนิค แม้ว่าแอปพลิเคชันจะทำงานในเว็บเบราว์เซอร์ แต่พวกเขาไม่เข้าใจว่าทำไมตัวเลือกเมนูทั้งหมดถึงเกิดขึ้นเมื่อคลิกขวา เราได้รับคำถามช่วยมากมายที่ถามเราว่ามีตัวเลือกอะไรบ้างสำหรับคนที่คิดว่าพวกเขาเป็นส่วนหนึ่งของแอปพลิเคชัน การปิดใช้งานนั้นเหมาะสมในกรณีนั้นและในแอปพลิเคชันเว็บอื่น ๆ อีกมากมาย
นิโคลัส

66

คำถามเดิมเกี่ยวกับวิธีหยุดการคลิกขวาเนื่องจากผู้ใช้สามารถปิดการใช้งาน JavaScript : เสียงที่เลวร้ายและชั่วร้าย (ดังนั้นการตอบสนองเชิงลบ) - แต่การทำซ้ำการเปลี่ยนเส้นทางทั้งหมดที่นี่แม้ว่าการทำซ้ำหลายรายการ

เช่นเดียวกับการใช้ปุ่มคลิกขวาในเกม HTML5 เป็นต้น สิ่งนี้สามารถทำได้ด้วยรหัสอินไลน์ข้างต้นหรือบิตที่ดีกว่าเป็นดังนี้:

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

แต่ถ้าคุณกำลังทำเกมแล้วจำไว้ว่าปุ่มคลิกขวาไฟContextMenuเหตุการณ์ - แต่ก็ยังยิงปกติmousedownและMouseUpเหตุการณ์เกินไป ดังนั้นคุณจึงจำเป็นต้องตรวจสอบของเหตุการณ์ที่เกิดขึ้นซึ่งทรัพย์สินเพื่อดูว่ามันเป็นซ้าย (ซึ่ง === 1) กลาง (ซึ่ง === 2) หรือขวา (ซึ่ง === 3) ปุ่มเมาส์ที่ถูกยิงเหตุการณ์

นี่คือตัวอย่างใน jQuery - โปรดทราบว่าการกดปุ่มเมาส์ขวาจะเริ่มการทำงานสามเหตุการณ์: เหตุการณ์ที่เกิดขึ้นกับเมาส์, เหตุการณ์บริบทและเหตุการณ์การวางเมาส์

// 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); 
    }
});

ดังนั้นหากคุณใช้ปุ่มเมาส์ซ้ายและขวาในเกมคุณจะต้องทำตามเงื่อนไขบางอย่างในเครื่องจัดการเมาส์


หากฉันเปิดใช้งานdom.event.contextmenu.enabledใน Firefox เหตุการณ์mousedownและmouseupกิจกรรมจะยังคงทำงานอยู่contextmenuหรือไม่
robertc

43

หากคุณไม่สนใจที่จะเตือนผู้ใช้ด้วยข้อความทุกครั้งที่พยายามคลิกขวาให้ลองเพิ่มสิ่งนี้ลงในแท็กร่างกายของคุณ

<body oncontextmenu="return false;">

การดำเนินการนี้จะบล็อกการเข้าถึงเมนูบริบททั้งหมด (ไม่ใช่เพียงจากปุ่มเมาส์ขวา แต่จากแป้นพิมพ์ด้วย)

อย่างไรก็ตามตามที่ระบุไว้ในคำตอบอื่น ๆ ไม่มีจุดเพิ่มตัวคลิกคลิกขวา ทุกคนที่มีความรู้เบราว์เซอร์ขั้นพื้นฐานสามารถดูที่มาและดึงข้อมูลที่ต้องการได้


ใช่ แต่มีบางครั้งที่ฉันต้องการแบ่งปันภาพกับผู้ที่ฉันรู้ว่าขาดความรู้เบราว์เซอร์ขั้นพื้นฐาน การปิดใช้งานการคลิกขวานั้นไม่สามารถป้องกันได้ 100% แต่ถ้าฉันโพสต์ภาพเพียงไม่กี่นาทีเพื่อให้บุคคลนั้นมีรูปลักษณ์มันก็ค่อนข้างปลอดภัย
WillO

บางครั้งระบบที่เปิดใช้งานระบบสัมผัสจะแมปเหตุการณ์การสัมผัสบางอย่างเช่นการแตะยาว ๆ เพื่อคลิกขวา (และเป็นการเปิดเมนูบริบท) อย่างไรก็ตามพฤติกรรมนี้อาจไม่พึงประสงค์และเป็นวิธีเดียวที่มีความหมายในการป้องกันไม่ให้ปิดการใช้งานเมนูบริบทโดยสิ้นเชิง
หรือผู้ทำแผนที่

@WillO: ฉันมีการใช้งานในกรณีที่ฉันจำเป็นที่คล้ายกันเพื่อตอบสนอง แต่ FYI ผู้ใช้มักจะหันไปใช้หน้าจอ
Hassan Baig

28

หากคุณเป็นแฟน jquery ใช้สิ่งนี้

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

4
นี่คือการใช้ jQuery โดยไม่มีเหตุผล สิ่งนี้จะเหมือนกับคำสั่ง JavaScript เดียวที่พบในคำตอบของ Mr. Speaker ซึ่งโพสต์เมื่อ1½ปีก่อนหน้านี้ อย่างไรก็ตามคำตอบนั้นยังมีโซลูชัน jQuery ซึ่งคุณไม่ต้องการอีก ใครบ้างที่ได้ upvoted คำตอบนี้ก็รู้ว่าสิ่งนี้ไม่? เหตุใดจึงต้องรอให้เหตุการณ์พร้อมเอกสารหยุดหยุดป้องกันไม่ให้เมนูบริบทปรากฏขึ้น เหตุใดจึงใช้สิ่งนี้thisในเหตุการณ์ที่พร้อม ทำไมคุณถึงใช้bindแทนon? อืม ...
Rudey

20

ก่อนอื่นคุณจะไม่สามารถบรรลุเป้าหมายนี้ได้หากไม่ใช้ความสามารถด้านไคลเอนต์ นี่คือที่ javascript ทำงาน

ประการที่สองหากคุณพยายามควบคุมสิ่งที่ผู้ใช้สามารถใช้จากเว็บไซต์ของคุณคุณต้องคิดใหม่ว่าคุณแสดงข้อมูลอย่างไร รูปภาพมี URL สาธารณะที่สามารถดึงผ่าน HTTP ได้โดยไม่จำเป็นต้องใช้เบราว์เซอร์

การพิสูจน์ตัวตนสามารถควบคุมว่าใครสามารถเข้าถึงทรัพยากรใดบ้าง

การฝังลายน้ำในภาพสามารถพิสูจน์ได้ว่าภาพนั้นมาจากบุคคล / บริษัท ที่เฉพาะเจาะจง

ในตอนท้ายของวันการจัดการทรัพยากรคือการจัดการผู้ใช้ / แขก

กฎข้อแรกของอินเทอร์เน็ตถ้าคุณไม่ต้องการให้เป็นแบบนั้นอย่าทำให้เป็นสาธารณะ!

กฎข้อที่สองของอินเทอร์เน็ตถ้าคุณไม่ต้องการใช้มันก็อย่าวางไว้บนอินเทอร์เน็ต!


20

หากเป้าหมายของคุณคือการป้องกันไม่ให้คนอื่นสามารถดาวน์โหลดภาพของคุณได้อย่างที่คนส่วนใหญ่พูดกันการปิดใช้งานการคลิกขวานั้นไม่ได้ผล

สมมติว่าคุณกำลังพยายามปกป้องภาพด้วยวิธีอื่น -

เมื่อใช้เครื่องเล่นแฟลชผู้ใช้จะไม่สามารถดาวน์โหลดได้ แต่จะจับภาพหน้าจอได้อย่างง่ายดาย

หากคุณต้องการที่จะเป็น Akward มากขึ้นทำให้ภาพพื้นหลังของ div ที่มีภาพโปร่งใสà la -

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

จะเพียงพอที่จะยับยั้งการโจรกรรมรูปภาพของคุณ (ดูตัวอย่างด้านล่าง) แต่ด้วยเทคนิคเหล่านี้ทั้งหมดเป็นเรื่องเล็กน้อยที่จะเอาชนะด้วยความเข้าใจพื้นฐานของ html


2
คุณสามารถโหลดภาพเป็น base64 เพื่อทำให้รหัสสับสนยิ่งขึ้น
Miguel Bartelsman

16

คุณไม่สามารถบรรลุสิ่งที่คุณขอได้โดยไม่ต้องใช้ Javascript เทคโนโลยีอื่น ๆ ที่คุณอาจเลือกใช้สามารถช่วยในการเขียนหน้าเว็บทางฝั่งเซิร์ฟเวอร์เพื่อส่งไปยังเบราว์เซอร์เท่านั้น

ไม่มีวิธีแก้ปัญหาที่ดีและไม่มีช่วงเวลาแก้ปัญหาหากไม่มี Javascript


1
และแม้กระทั่งแล้วมันน่ารำคาญสำหรับผู้ใช้ไม่พูดถึงเรื่องง่ายที่จะข้าม
Manos Dilaverakis

1
ฉันเคยเห็นหน้าเว็บที่มีป๊อปอัปเป็นกิริยาว่า 'การคลิกขวาถูกปิดใช้งาน' ซึ่งจะแสดงเมนูคลิกขวาเมื่อคุณปิด พวกเขายังแสดงข้อความเมื่อคุณเลื่อนใช้ trackpad ซึ่งน่ารำคาญมาก
Pete Kirkham

1
ใช่แล้วมันน่ารำคาญเป็นพิเศษเพราะโดยปกติแล้วมันจะป้องกันไม่ให้ผู้คนจากภาพ "ขโมย" ซึ่งมีอยู่ในฮาร์ดไดรฟ์ของพวกเขาอยู่แล้ว แต่ทั้งหมดนี้ก็ป้องกันฉันจากการใช้การค้นหาบริบท: addons.mozilla.org/en-US/firefox/addon/240 . ไอ้พวกนั้น ...
Calvin

2
ฉันชอบคำตอบนี้เกือบทุกคำว่า "แน่นอนใช้จาวาสคริปต์!"
Charles Wood

14

หากเป้าหมายของคุณคือไม่อนุญาตให้ผู้ใช้บันทึกรูปภาพของคุณคุณสามารถตรวจสอบว่าเป้าหมายที่คลิกนั้นเป็นรูปภาพหรือไม่ให้คลิกขวาในกรณีนั้นเท่านั้น ดังนั้นการคลิกขวาสามารถใช้เพื่อวัตถุประสงค์อื่น นำมาจากรหัสด้านบน:

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

นี่เป็นเพียงการกำจัดวิธีที่ง่ายที่สุดในการบันทึกรูปภาพของคุณ แต่ยังสามารถทำได้


นี่เป็นความคิดของฉันเป็นวิธีที่ดีที่สุดในการใช้งาน - ในฐานะผู้ใช้เว็บฉันพบว่าฟังก์ชันการคลิกขวามีประโยชน์เป็นครั้งคราว แต่เป็นวิธีการแก้ปัญหาที่ง่ายและง่าย
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 ฉันใช้ตัวอย่างของคุณและทำงานได้ดี! รูปภาพของฉันยังคงสามารถคลิกได้และทำงานตามที่ควรจะเป็น แต่ไม่สามารถดาวน์โหลดได้ เหตุผลที่ฉันต้องการปิดการใช้งานการคลิกขวาก็คือผู้เข้าชมที่ต้องการเพียงแค่ภาพจากนั้นออกไปทันทีจะส่งผลต่ออัตราการตีกลับของฉัน อย่างน้อยก็ด้วยวิธีนี้อัตราตีกลับของฉันจะไม่แย่เท่าที่ควรเพราะมันใช้เวลา 1 หรือ 2 นาทีในการคิด :) ไชโย aravind3 !!!!
coolydude

6

ทำเหมือนด้านล่าง (ทำงานบน firefox ด้วย):

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

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

5

ใส่รหัสนี้ใน<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


สิ่งนี้ใช้ไม่ได้กับ Firefox มันปิดใช้งานการเลือกอินพุตสำหรับรูปแบบการพิมพ์ :(
ALWAN

5

ฉันใช้รหัสนี้เพื่อปิดการใช้งานคลิกขวาในหน้าเว็บใด ๆ มันทำงานได้ดี คุณสามารถใช้รหัสนี้

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

แน่นอนตามความเห็นอื่น ๆ ทั้งหมดที่นี่สิ่งนี้ไม่ได้ผล

ฉันเคยสร้างแอปเพล็ต java ง่ายๆสำหรับลูกค้าที่บังคับให้มีการจับภาพที่จะทำผ่านการจับภาพหน้าจอและคุณอาจต้องการพิจารณาเทคนิคที่คล้ายกัน มันทำงานได้ภายในข้อ จำกัด แต่ฉันก็ยังคิดว่ามันเสียเวลา



3

ลองสิ่งนี้

<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

การปิดใช้งานการคลิกขวาบนหน้าเว็บของคุณนั้นง่ายมาก มีโค้ด JavaScript เพียงไม่กี่บรรทัดที่จะทำงานนี้ ด้านล่างเป็นรหัส JavaScript:

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

ในโค้ดด้านบนฉันได้เลือกแท็กแล้ว หลังจากคุณเพิ่มโค้ดสามบรรทัดนั้นแล้วมันจะปิดการใช้งานการคลิกขวาบนหน้าเว็บของคุณ

แหล่งที่มา: ปิดการใช้งานคลิกขวาคัดลอกตัดบนหน้าเว็บโดยใช้ jQuery



2

ฉันรู้ว่าฉันมาสาย แต่ฉันต้องการสร้างข้อสันนิษฐานและคำอธิบายสำหรับคำตอบที่ฉันจะให้

ฉันสามารถปิดใช้งานการคลิกขวาได้ไหม

ฉันสามารถปิดใช้งานการคลิกขวาบนหน้าเว็บของฉันโดยไม่ใช้ Javascript ได้หรือไม่?

ใช่โดยใช้ JavaScript คุณสามารถปิดการใช้งานกิจกรรมใด ๆ ที่เกิดขึ้นและคุณสามารถทำได้โดยใช้จาวาสคริปต์เป็นส่วนใหญ่เท่านั้น วิธีที่คุณต้องการคือ:

  1. ฮาร์ดแวร์ที่ใช้งานได้

  2. เว็บไซต์หรือที่ที่คุณสามารถเรียนรู้เกี่ยวกับรหัส เพราะคุณจะต้องการพวกเขา

ตอนนี้สมมติว่าคุณต้องการปิดกั้นการกดปุ่ม Enter ที่นี่คือรหัส:

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

สำหรับการคลิกขวาใช้สิ่งนี้:

event.button == 2

event.keyCodeในสถานที่ของ และคุณจะปิดกั้นมัน

ฉันต้องการถามเรื่องนี้เพราะเบราว์เซอร์ส่วนใหญ่อนุญาตให้ผู้ใช้ปิดการใช้งานโดย Javascript

คุณพูดถูกเบราว์เซอร์อนุญาตให้คุณใช้JavaScriptและจาวาสคริปต์จะทำงานให้คุณทั้งหมด คุณไม่จำเป็นต้องตั้งค่าใด ๆ เพียงแค่ต้องการแอตทริบิวต์ของสคริปต์ในส่วนหัว

ทำไมคุณไม่ควรปิดการใช้งาน?

คำตอบหลักและรวดเร็วในการที่จะเป็นผู้ใช้จะไม่ชอบมัน ทุกคนต้องการอิสระไม่มีใครฉันหมายถึงไม่มีใครต้องการถูกบล็อกหรือปิดการใช้งานไม่กี่นาทีที่ผ่านมาฉันอยู่ที่ไซต์ซึ่งบล็อกฉันจากการคลิกขวาและฉันรู้สึกว่าทำไม คุณต้องการรักษาความปลอดภัยซอร์สโค้ดของคุณหรือไม่? จากนั้นที่นี่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 (ผู้ใช้ก็จะได้รับการชื่นชมเช่นกัน)

ทำไมไม่ปิดใช้งานการคลิกขวา:

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



0

หมายเหตุสำคัญ:ขึ้นอยู่กับเบราว์เซอร์และระบบปฏิบัติการเพื่อให้สามารถป้องกันได้หรือไม่!

คุณควรทำอย่างไร ไม่ เพราะมันจะไม่ป้องกันผู้ใช้ แต่มันจะทำให้เขารำคาญ

คุณสามารถใช้มันได้หรือไม่ ใช่แล้ว ตัวอย่าง: ในบางแอพพลิเคชั่นเว็บที่คุณต้องการปรับแต่งเมนูป๊อปอัพในเกมที่ผู้ใช้อาจรำคาญเมื่อคลิกขวาและกรณีอื่น ๆ โดยไม่ตั้งใจ

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();
});

0

สิ่งที่ควรพิจารณา:

เบราว์เซอร์ปลั๊กอินเช่น "เปิดใช้งานการคลิกขวา" ในร้าน Chrome มีอยู่ด้วยเหตุผลและคุณจะไม่สามารถหลีกเลี่ยงได้ จริงๆแล้วไม่มีอะไรที่คุณสามารถทำได้เพื่อหยุดคนไม่ให้ดาวน์โหลดเนื้อหาของคุณเนื่องจากพวกเขาต้องดาวน์โหลดเพื่อดูแม้แต่ในเบราว์เซอร์ ผู้คนพยายาม แต่มันออกไปข้างนอกเสมอ

โดยทั่วไปหากเนื้อหาไม่ควรเผยแพร่ต่อสาธารณะอย่าทำให้เนื้อหาออนไลน์

นอกจากนี้การไม่สามารถคลิกขวาเป็นปัญหาเกี่ยวกับการเข้าถึงและจำนวนเงินสำหรับการเลือกปฏิบัติที่ผิดกฎหมายต่อคนตาบอดหรือผู้พิการหรือผู้สูงอายุในหลาย ๆ กรณี ตรวจสอบกฎหมายท้องถิ่นของคุณ แต่ในสหรัฐอเมริกากฎหมายในรูปแบบของ ADA ของรัฐบาลกลางในฐานะคนตาบอดหรือผู้สูงอายุที่อาจมีปัญหาด้านการมองเห็นเป็นชั้นที่ได้รับความคุ้มครองตามกฎหมาย

ดังนั้นแทนที่จะทำอย่างนี้และเสียเวลาและความพยายามอย่าพยายามทำสิ่งนี้ มันอาจทำให้ บริษัท ของคุณถูกฟ้องร้อง


0

ลองใช้รหัสนี้เพื่อปิดการใช้งานตัวเลือกองค์ประกอบการตรวจสอบ

    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
ขอบคุณสำหรับข้อมูลโค้ดนี้ซึ่งอาจให้ความช่วยเหลือระยะสั้นแบบ จำกัด คำอธิบายที่เหมาะสมจะช่วยปรับปรุงมูลค่าในระยะยาวอย่างมากโดยการแสดงว่าเหตุใดจึงเป็นวิธีแก้ปัญหาที่ดีและจะทำให้มีประโยชน์มากขึ้นสำหรับผู้อ่านในอนาคตด้วยคำถามอื่น ๆ ที่คล้ายกัน โปรดแก้ไขคำตอบของคุณเพื่อเพิ่มคำอธิบายรวมถึงข้อสมมติที่คุณได้ทำไว้
Toby Speight

สิ่งนี้สามารถแทนที่ได้อย่างง่ายดายใน Chrome: คลิกที่จุด 3 จุดถัดจากรูปโปรไฟล์ของคุณ> เครื่องมือเพิ่มเติม> เครื่องมือสำหรับนักพัฒนาซอฟต์แวร์
sportzpikachu

-1

ใช้ฟังก์ชันนี้เพื่อปิดการใช้งานที่เหมาะสม click.You สามารถปิดการใช้งานคลิกซ้ายและแตะโดย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; }
            }

การใช้ Javascript เพื่อทำสิ่งที่ HTML ได้ทำไปแล้วคือวิศวกรรมที่ไม่ดีและสิ้นเปลือง
ซื่อสัตย์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.