ฉันสามารถปิดใช้งานการคลิกขวาบนหน้าเว็บของฉันโดยไม่ใช้ JavaScript ได้หรือไม่? ฉันถามสิ่งนี้เพราะเบราว์เซอร์ส่วนใหญ่อนุญาตให้ผู้ใช้ปิดการใช้งาน JavaScript
ถ้าไม่ฉันจะใช้ JavaScript เพื่อปิดการคลิกขวาได้อย่างไร
ฉันสามารถปิดใช้งานการคลิกขวาบนหน้าเว็บของฉันโดยไม่ใช้ JavaScript ได้หรือไม่? ฉันถามสิ่งนี้เพราะเบราว์เซอร์ส่วนใหญ่อนุญาตให้ผู้ใช้ปิดการใช้งาน JavaScript
ถ้าไม่ฉันจะใช้ JavaScript เพื่อปิดการคลิกขวาได้อย่างไร
คำตอบ:
คุณสามารถทำได้ด้วย JavaScript โดยเพิ่มตัวฟังเหตุการณ์สำหรับเหตุการณ์ "contextmenu" และเรียกใช้preventDefault()เมธอด:
document.addEventListener('contextmenu', event => event.preventDefault());
ที่ถูกกล่าวว่า: ไม่ได้ทำมัน
ทำไม? เพราะมันไม่ได้ทำอะไรนอกจากผู้ใช้ที่น่ารำคาญ เบราว์เซอร์จำนวนมากยังมีตัวเลือกด้านความปลอดภัยที่ไม่อนุญาตให้ปิดใช้งานเมนูคลิกขวา (บริบท) ต่อไป
ไม่แน่ใจว่าทำไมคุณต้องการ หากไม่มีความเชื่อผิดที่คุณสามารถป้องกันซอร์สโค้ดหรือรูปภาพของคุณในลักษณะนั้นลองคิดใหม่: คุณทำไม่ได้
oncontextmenu="return false"อย่างอื่นที่ไม่ใช่ร่างกายอาจเข้าท่าเช่นบนผืนผ้าใบ
ไม่
แค่อย่า
ไม่ว่าคุณจะทำอะไรคุณไม่สามารถป้องกันผู้ใช้จากการเข้าถึงข้อมูลทุกส่วนในเว็บไซต์ของคุณ โค้ดจาวาสคริปต์ใด ๆ ที่คุณสามารถแสดงผลได้โดยเพียงแค่ปิด Javascript บนเบราว์เซอร์ (หรือใช้ปลั๊กอินเช่น NoScript) นอกจากนี้ไม่มีวิธีปิดการใช้งานความสามารถของผู้ใช้เพียงแค่ "ดูแหล่งที่มา" หรือ "ดูข้อมูลหน้าเว็บ" (หรือใช้ wget) สำหรับเว็บไซต์ของคุณ
มันไม่คุ้มค่ากับความพยายาม มันจะไม่ทำงานจริง ๆ มันจะทำให้เว็บไซต์ของคุณเป็นศัตรูกับผู้ใช้ พวกเขาจะสังเกตเห็นสิ่งนี้และหยุดการเยี่ยมชม ไม่มีประโยชน์ในการทำเช่นนี้เพียงสูญเสียความพยายามและสูญเสียการเข้าชมเท่านั้น
อย่า
อัปเดต:ดูเหมือนว่าหัวข้อเล็ก ๆ นี้ได้พิสูจน์แล้วว่ามีการโต้เถียงกันอยู่ตลอดเวลา ถึงกระนั้นฉันยังคงยืนหยัดอยู่กับคำตอบของคำถามนี้ บางครั้งคำตอบที่ถูกต้องคือคำแนะนำแทนที่จะเป็นคำตอบที่แท้จริง
ผู้ที่สะดุดกับคำถามนี้ด้วยความหวังว่าจะทราบวิธีการสร้างเมนูบริบทที่กำหนดเองควรดูที่อื่นเช่นคำถามเหล่านี้:
<body oncontextmenu="return false;">
คำถามเดิมเกี่ยวกับวิธีหยุดการคลิกขวาเนื่องจากผู้ใช้สามารถปิดการใช้งาน 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หรือไม่
หากคุณไม่สนใจที่จะเตือนผู้ใช้ด้วยข้อความทุกครั้งที่พยายามคลิกขวาให้ลองเพิ่มสิ่งนี้ลงในแท็กร่างกายของคุณ
<body oncontextmenu="return false;">
การดำเนินการนี้จะบล็อกการเข้าถึงเมนูบริบททั้งหมด (ไม่ใช่เพียงจากปุ่มเมาส์ขวา แต่จากแป้นพิมพ์ด้วย)
อย่างไรก็ตามตามที่ระบุไว้ในคำตอบอื่น ๆ ไม่มีจุดเพิ่มตัวคลิกคลิกขวา ทุกคนที่มีความรู้เบราว์เซอร์ขั้นพื้นฐานสามารถดูที่มาและดึงข้อมูลที่ต้องการได้
หากคุณเป็นแฟน jquery ใช้สิ่งนี้
$(function() {
$(this).bind("contextmenu", function(e) {
e.preventDefault();
});
});
thisในเหตุการณ์ที่พร้อม ทำไมคุณถึงใช้bindแทนon? อืม ...
ก่อนอื่นคุณจะไม่สามารถบรรลุเป้าหมายนี้ได้หากไม่ใช้ความสามารถด้านไคลเอนต์ นี่คือที่ javascript ทำงาน
ประการที่สองหากคุณพยายามควบคุมสิ่งที่ผู้ใช้สามารถใช้จากเว็บไซต์ของคุณคุณต้องคิดใหม่ว่าคุณแสดงข้อมูลอย่างไร รูปภาพมี URL สาธารณะที่สามารถดึงผ่าน HTTP ได้โดยไม่จำเป็นต้องใช้เบราว์เซอร์
การพิสูจน์ตัวตนสามารถควบคุมว่าใครสามารถเข้าถึงทรัพยากรใดบ้าง
การฝังลายน้ำในภาพสามารถพิสูจน์ได้ว่าภาพนั้นมาจากบุคคล / บริษัท ที่เฉพาะเจาะจง
ในตอนท้ายของวันการจัดการทรัพยากรคือการจัดการผู้ใช้ / แขก
กฎข้อแรกของอินเทอร์เน็ตถ้าคุณไม่ต้องการให้เป็นแบบนั้นอย่าทำให้เป็นสาธารณะ!
กฎข้อที่สองของอินเทอร์เน็ตถ้าคุณไม่ต้องการใช้มันก็อย่าวางไว้บนอินเทอร์เน็ต!
หากเป้าหมายของคุณคือการป้องกันไม่ให้คนอื่นสามารถดาวน์โหลดภาพของคุณได้อย่างที่คนส่วนใหญ่พูดกันการปิดใช้งานการคลิกขวานั้นไม่ได้ผล
สมมติว่าคุณกำลังพยายามปกป้องภาพด้วยวิธีอื่น -
เมื่อใช้เครื่องเล่นแฟลชผู้ใช้จะไม่สามารถดาวน์โหลดได้ แต่จะจับภาพหน้าจอได้อย่างง่ายดาย
หากคุณต้องการที่จะเป็น Akward มากขึ้นทำให้ภาพพื้นหลังของ div ที่มีภาพโปร่งใสà la -
<div style="background-image: url(YourImage.jpg);">
<img src="transparent.gif"/>
</div>
จะเพียงพอที่จะยับยั้งการโจรกรรมรูปภาพของคุณ (ดูตัวอย่างด้านล่าง) แต่ด้วยเทคนิคเหล่านี้ทั้งหมดเป็นเรื่องเล็กน้อยที่จะเอาชนะด้วยความเข้าใจพื้นฐานของ html
คุณไม่สามารถบรรลุสิ่งที่คุณขอได้โดยไม่ต้องใช้ 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;
});
ใส่รหัสนี้ใน<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
ฉันใช้รหัสนี้เพื่อปิดการใช้งานคลิกขวาในหน้าเว็บใด ๆ มันทำงานได้ดี คุณสามารถใช้รหัสนี้
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>
แน่นอนตามความเห็นอื่น ๆ ทั้งหมดที่นี่สิ่งนี้ไม่ได้ผล
ฉันเคยสร้างแอปเพล็ต java ง่ายๆสำหรับลูกค้าที่บังคับให้มีการจับภาพที่จะทำผ่านการจับภาพหน้าจอและคุณอาจต้องการพิจารณาเทคนิคที่คล้ายกัน มันทำงานได้ภายในข้อ จำกัด แต่ฉันก็ยังคิดว่ามันเสียเวลา
<script>
window.oncontextmenu = function () {
console.log("Right Click Disabled");
return false;
}
</script>
ลองสิ่งนี้
<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
$(document).ready(function () {
document.oncontextmenu = document.body.oncontextmenu = function () { return false; }
});
ฉันรู้ว่าฉันมาสาย แต่ฉันต้องการสร้างข้อสันนิษฐานและคำอธิบายสำหรับคำตอบที่ฉันจะให้
ฉันสามารถปิดใช้งานการคลิกขวาบนหน้าเว็บของฉันโดยไม่ใช้ Javascript ได้หรือไม่?
ใช่โดยใช้ JavaScript คุณสามารถปิดการใช้งานกิจกรรมใด ๆ ที่เกิดขึ้นและคุณสามารถทำได้โดยใช้จาวาสคริปต์เป็นส่วนใหญ่เท่านั้น วิธีที่คุณต้องการคือ:
ฮาร์ดแวร์ที่ใช้งานได้
เว็บไซต์หรือที่ที่คุณสามารถเรียนรู้เกี่ยวกับรหัส เพราะคุณจะต้องการพวกเขา
ตอนนี้สมมติว่าคุณต้องการปิดกั้นการกดปุ่ม 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 (ผู้ใช้ก็จะได้รับการชื่นชมเช่นกัน)
ทำไมไม่ปิดใช้งานการคลิกขวา:
javascript:
document.getElementsByTagName("html")[0].setAttribute("oncontextmenu", "return false");
หมายเหตุสำคัญ:ขึ้นอยู่กับเบราว์เซอร์และระบบปฏิบัติการเพื่อให้สามารถป้องกันได้หรือไม่!
คุณควรทำอย่างไร ไม่ เพราะมันจะไม่ป้องกันผู้ใช้ แต่มันจะทำให้เขารำคาญ
คุณสามารถใช้มันได้หรือไม่ ใช่แล้ว ตัวอย่าง: ในบางแอพพลิเคชั่นเว็บที่คุณต้องการปรับแต่งเมนูป๊อปอัพในเกมที่ผู้ใช้อาจรำคาญเมื่อคลิกขวาและกรณีอื่น ๆ โดยไม่ตั้งใจ
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();
});
สิ่งที่ควรพิจารณา:
เบราว์เซอร์ปลั๊กอินเช่น "เปิดใช้งานการคลิกขวา" ในร้าน Chrome มีอยู่ด้วยเหตุผลและคุณจะไม่สามารถหลีกเลี่ยงได้ จริงๆแล้วไม่มีอะไรที่คุณสามารถทำได้เพื่อหยุดคนไม่ให้ดาวน์โหลดเนื้อหาของคุณเนื่องจากพวกเขาต้องดาวน์โหลดเพื่อดูแม้แต่ในเบราว์เซอร์ ผู้คนพยายาม แต่มันออกไปข้างนอกเสมอ
โดยทั่วไปหากเนื้อหาไม่ควรเผยแพร่ต่อสาธารณะอย่าทำให้เนื้อหาออนไลน์
นอกจากนี้การไม่สามารถคลิกขวาเป็นปัญหาเกี่ยวกับการเข้าถึงและจำนวนเงินสำหรับการเลือกปฏิบัติที่ผิดกฎหมายต่อคนตาบอดหรือผู้พิการหรือผู้สูงอายุในหลาย ๆ กรณี ตรวจสอบกฎหมายท้องถิ่นของคุณ แต่ในสหรัฐอเมริกากฎหมายในรูปแบบของ ADA ของรัฐบาลกลางในฐานะคนตาบอดหรือผู้สูงอายุที่อาจมีปัญหาด้านการมองเห็นเป็นชั้นที่ได้รับความคุ้มครองตามกฎหมาย
ดังนั้นแทนที่จะทำอย่างนี้และเสียเวลาและความพยายามอย่าพยายามทำสิ่งนี้ มันอาจทำให้ บริษัท ของคุณถูกฟ้องร้อง
ลองใช้รหัสนี้เพื่อปิดการใช้งานตัวเลือกองค์ประกอบการตรวจสอบ
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
};
});
ใช้ฟังก์ชันนี้เพื่อปิดการใช้งานที่เหมาะสม 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; }
}