ฉันต้องใส่ภาพในหน้าของฉัน ฉันต้องการปิดการใช้งานการลากภาพนั้น ฉันพยายามหลายสิ่งหลายอย่าง แต่ไม่ช่วย ใครสามารถช่วยฉันออก
ฉันไม่ต้องการเก็บภาพนั้นเป็นภาพพื้นหลังเพราะฉันกำลังปรับขนาดภาพ
ฉันต้องใส่ภาพในหน้าของฉัน ฉันต้องการปิดการใช้งานการลากภาพนั้น ฉันพยายามหลายสิ่งหลายอย่าง แต่ไม่ช่วย ใครสามารถช่วยฉันออก
ฉันไม่ต้องการเก็บภาพนั้นเป็นภาพพื้นหลังเพราะฉันกำลังปรับขนาดภาพ
คำตอบ:
คุณชอบสิ่งนี้ ...
document.getElementById('my-image').ondragstart = function() { return false; };
ดูว่ามันใช้งานได้ (หรือไม่ทำงานแทน)
ดูเหมือนว่าคุณกำลังใช้ jQuery
$('img').on('dragstart', function(event) { event.preventDefault(); });
$(document)
แทน$(window)
$('img').on('dragstart', false);
วิธีแก้ปัญหา CSS เท่านั้น: ใช้ pointer-events: none
img
เพียงเพิ่ม draggable = "false" ลงในแท็กรูปภาพของคุณ:
<img draggable="false" src="image.png">
IE8 และรุ่นต่ำกว่าไม่รองรับ
window.ondragstart = function() { return false; }
วิธีแก้ปัญหาข้ามเบราว์เซอร์ที่ง่ายที่สุดคือ
<img draggable="false" ondragstart="return false;" src="..." />
ปัญหากับ
img {
-moz-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
user-select: none;
-webkit-user-drag: none;
user-drag: none;
-webkit-touch-callout: none;
}
มันไม่ทำงานใน firefox
img {
-moz-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
user-select: none;
-webkit-user-drag: none;
user-drag: none;
-webkit-touch-callout: none;
}
ฉันใช้มันในเว็บไซต์ของฉันที่http://www.namdevmatrimony.in/ มันใช้งานได้เหมือนเวทมนตร์ !!! :)
ฉันลองตัวเองและพบว่ามันใช้งานได้
$("img").mousedown(function(){
return false;
});
ฉันแน่ใจว่านี่เป็นการปิดการใช้งานการลากภาพทั้งหมด ไม่แน่ใจว่ามันมีผลกระทบอย่างอื่น
<a>
แท็ก? จากนั้นหากผู้ใช้คลิกที่ภาพลิงค์จะไม่ได้รับการคลิก
เห็นนี้คำตอบ ; ใน Chrome และ Safari คุณสามารถใช้สไตล์ต่อไปนี้เพื่อปิดการใช้งานการลากเริ่มต้น:
-webkit-user-drag: auto | element | none;
คุณสามารถลองเลือกผู้ใช้สำหรับ Firefox และ IE (10+):
-moz-user-select: none | text | all | element
-ms-user-select: none | text | all | element
คุณสามารถเพิ่มสิ่งต่อไปนี้ในแต่ละภาพที่คุณไม่ต้องการลากไปมาได้ (ภายในimg
แท็ก):
onmousedown="return false;"
เช่น
img src="Koala.jpg" onmousedown="return false;"
รหัสนี้ทำสิ่งที่คุณต้องการ มันป้องกันภาพจากการลากในขณะที่อนุญาตการกระทำอื่น ๆ ที่ขึ้นอยู่กับเหตุการณ์
$("img").mousedown(function(e){
e.preventDefault()
});
ใช้สิ่งนี้โดยตรง: ondragstart="return false;"
ในแท็กรูปภาพของคุณ
<img src="http://image-example.png" ondragstart="return false;"/>
หากคุณมีหลายภาพให้ใส่ใน<div>
แท็ก:
<div ondragstart="return false;">
<img src="image1.png"/>
<img scr="image2.png"/>
</div>
ใช้งานได้ในเบราว์เซอร์หลัก ๆ ทั้งหมด
ตั้งแต่ภาพของฉันถูกสร้างขึ้นโดยใช้ Ajax และดังนั้นจึงไม่สามารถใช้ได้ใน windows.load
$("#page").delegate('img', 'dragstart', function (event) { event.preventDefault(); });
วิธีนี้ฉันสามารถควบคุมส่วนที่บล็อกพฤติกรรมได้เพียงใช้การเชื่อมโยงเหตุการณ์เดียวเท่านั้นและใช้ได้กับ ajax ที่สร้างภาพในอนาคตโดยไม่ต้องทำอะไรเลย
ด้วย jQuery ใหม่ที่on
มีผลผูกพัน:
$('#page').on('dragstart', 'img', function(event) { event.preventDefault(); });
(ขอบคุณ @ialphan)
img
องค์ประกอบไม่ จำกัดปัจจุบันหรืออนาคต เข้มข้นน้อยที่สุดแข็งแกร่งที่สุด
<img draggable="false" src="images/testimg1.jpg" alt=""/>
ทางออกที่ดีมีปัญหาเล็ก ๆ น้อย ๆ ที่มีความขัดแย้งหากใครที่มีข้อขัดแย้งจากห้องสมุด js อื่นก็ไม่ทำให้เกิดความขัดแย้งเช่นนั้น
var $j = jQuery.noConflict();$j('img').bind('dragstart', function(event) { event.preventDefault(); });
หวังว่านี่จะช่วยให้ใครบางคนออกมา
ฉันไม่รู้ว่าคำตอบในที่นี้ช่วยทุกคนหรือไม่ แต่นี่เป็นเคล็ดลับ CSS แบบอินไลน์ที่จะช่วยให้คุณปิดการใช้งานการลากและการเลือกข้อความในหน้า HTML
คุณเพิ่มแท็ก<body>
ondragstart="return false"
วิธีนี้จะปิดใช้งานการลากรูปภาพ onselectstart="return false"
แต่ถ้าคุณยังต้องการที่จะปิดการใช้งานการเลือกข้อความแล้วเพิ่ม
รหัสจะมีลักษณะดังนี้: <body ondragstart="return false" onselectstart="return false">
คุณอาจพิจารณาโซลูชันของฉันดีที่สุด คำตอบส่วนใหญ่ไม่เข้ากันได้กับเบราว์เซอร์เก่าเช่น IE8 เนื่องจากe.preventDefault ()จะไม่ได้รับการสนับสนุนเช่นเดียวกับเหตุการณ์ondragstart ในการที่จะเข้ากันได้กับเบราว์เซอร์คุณต้องปิดกั้นเหตุการณ์mousemoveสำหรับภาพนี้ ดูตัวอย่างด้านล่าง:
jQuery
$("#my_image").mousemove( function(e) { return false } ); // fix for IE
$("#my_image").attr("draggable", false); // disable dragging from attribute
ไม่มี jQuery
var my_image = document.getElementById("my_image");
my_image.setAttribute("draggable", false);
if (my_image.addEventListener) {
my_image.addEventListener("mousemove", function(e) { return false });
} else if (my_image.attachEvent) {
my_image.attachEvent("onmousemove", function(e) { return false });
}
ผ่านการทดสอบและใช้งานได้แม้กับ IE8
ตั้งค่าคุณสมบัติ CSS ต่อไปนี้เป็นรูปภาพ:
user-drag: none;
user-select: none;
-moz-user-select: none;
-webkit-user-drag: none;
-webkit-user-select: none;
-ms-user-select: none;
เป็นไปได้และคำตอบอื่น ๆ ที่โพสต์นั้นถูกต้องสมบูรณ์แบบ แต่คุณสามารถใช้วิธีการเดรัจฉานบังคับและป้องกันพฤติกรรมเริ่มต้นของmousedown
ภาพ ซึ่งจะเริ่มลากภาพ
บางสิ่งเช่นนี้
window.onload = function () {
var images = document.getElementsByTagName('img');
for (var i = 0; img = images[i++];) {
img.ondragstart = function() { return false; };
}
};
document.getElementById('#yourImageId').addEventListener('dragstart', function(e) {
e.preventDefault();
});
ทำงานได้ใน Plunker นี้http://plnkr.co/edit/HbAbJkF0PVLIMjTmEZml
คุณสามารถใช้รหัสแบบอินไลน์สำหรับสิ่งนี้
<img draggable="false" src="http://www.ourkanpur.com/images/logo.png">
และตัวเลือกที่สองคือการใช้ CSS ภายนอกหรือบนหน้า
img {
-moz-user-select: none;
-webkit-user-select: none;
-ms-user-select: none;
user-select: none;
-webkit-user-drag: none;
user-drag: none;
-webkit-touch-callout: none;
}
<img src="http://www.ourkanpur.com/images/logo.png">
ทั้งสองทำงานอย่างถูกต้อง ฉันใช้ css ภายนอกในเว็บไซต์นี้(คลิกที่นี่)
jQuery:
$('body').on('dragstart drop', function(e){
e.preventDefault();
return false;
});
คุณสามารถแทนที่ตัวเลือกเนื้อหาด้วยคอนเทนเนอร์อื่นที่เด็ก ๆ ที่คุณต้องการป้องกันไม่ให้ถูกลากและวาง
คำตอบนั้นง่าย:
<body oncontextmenu="return false"/>
- ปิดการใช้งานคลิกขวา
<body ondragstart="return false"/>
- ปิดการใช้งานการลากเมาส์
<body ondrop="return false"/>
- ปิดการใช้งานการวางเมาส์
ฉันทำคุณสมบัติ CSS ที่แสดงที่นี่เช่นเดียวกับการตรวจสอบ ondragstart ด้วยจาวาสคริปต์ต่อไปนี้:
handleDragStart: function (evt) {
if (evt.target.nodeName.match(/^(IMG|DIV|SPAN|A)$/i)) {
evt.preventDefault();
return false;
}
},
การขโมยจากคำตอบของฉันเพียงเพิ่มองค์ประกอบที่โปร่งใสขนาดเท่ากันบนภาพ เมื่อคุณปรับขนาดรูปภาพต้องแน่ใจว่าได้ปรับขนาดองค์ประกอบแล้ว
สิ่งนี้ควรใช้กับเบราว์เซอร์ส่วนใหญ่หรือแม้แต่เบราว์เซอร์ที่เก่ากว่า