जवाबों:
function clearSelection() {
if(document.selection && document.selection.empty) {
document.selection.empty();
} else if(window.getSelection) {
var sel = window.getSelection();
sel.removeAllRanges();
}
}
आप इन शैलियों को सभी गैर-IE ब्राउज़रों और IE10 की अवधि के लिए भी लागू कर सकते हैं:
span.no_selection {
user-select: none; /* standard syntax */
-webkit-user-select: none; /* webkit (safari, chrome) browsers */
-moz-user-select: none; /* mozilla browsers */
-khtml-user-select: none; /* webkit (konqueror) browsers */
-ms-user-select: none; /* IE10+ */
}
-ms-user-select: none;
कि blogs.msdn.com/b/ie/archive/2012/01/11/… @PaoloBergantino
सादे जावास्क्रिप्ट में:
element.addEventListener('mousedown', function(e){ e.preventDefault(); }, false);
या jQuery के साथ:
jQuery(element).mousedown(function(e){ e.preventDefault(); });
return false
इस्तेमाल किए जाने के अलावा event.preventDefault()
जो किसी भी अन्य हैंडलर को नहीं मार सकता है जो आपको मूसडाउन पर हो सकता है।
element
एक textarea है, हाँ।
केवल एक डबल क्लिक के बाद पाठ चयन को रोकने के लिए:
आप MouseEvent#detail
संपत्ति का उपयोग कर सकते हैं। मूसडाउन या माउसअप घटनाओं के लिए, यह 1 प्लस वर्तमान क्लिक गणना है।
document.addEventListener('mousedown', function (event) {
if (event.detail > 1) {
event.preventDefault();
// of course, you still do not know what you prevent here...
// You could also check event.ctrlKey/event.shiftKey/event.altKey
// to not prevent something useful.
}
}, false);
Https://developer.mozilla.org/en-US/docs/Web/API/UIEvent/ditail देखें
(event.detail === 2)
वास्तव में केवल डबल-क्लिक को रोकने के लिए उपयोग करें (और ट्रिपल-क्लिक आदि नहीं)
एफडब्ल्यूआईडब्ल्यू, मैंने उन बाल तत्वों user-select: none
के मूल तत्व को सेट किया है जो मैं किसी भी तरह से चयनित नहीं करना चाहता हूं जब मूल तत्व पर कहीं भी डबल क्लिक करें। और यह काम करता है! शांत बात है contenteditable="true"
, पाठ चयन और आदि अभी भी बच्चे के तत्वों पर काम करता है!
बिल्कुल वैसा ही:
<div style="user-select: none">
<p>haha</p>
<p>haha</p>
<p>haha</p>
<p>haha</p>
</div>
style="user-select: note"
हर जगह
एक साधारण जावास्क्रिप्ट फ़ंक्शन जो पृष्ठ-तत्व के अंदर सामग्री को अचूक बनाता है:
function makeUnselectable(elem) {
if (typeof(elem) == 'string')
elem = document.getElementById(elem);
if (elem) {
elem.onselectstart = function() { return false; };
elem.style.MozUserSelect = "none";
elem.style.KhtmlUserSelect = "none";
elem.unselectable = "on";
}
}
कोणीय 2+ के लिए एक समाधान की तलाश करने वालों के लिए ।
आप mousedown
तालिका सेल के आउटपुट का उपयोग कर सकते हैं ।
<td *ngFor="..."
(mousedown)="onMouseDown($event)"
(dblclick) ="onDblClick($event)">
...
</td>
और अगर रोका जाए detail > 1
।
public onMouseDown(mouseEvent: MouseEvent) {
// prevent text selection for dbl clicks.
if (mouseEvent.detail > 1) mouseEvent.preventDefault();
}
public onDblClick(mouseEvent: MouseEvent) {
// todo: do what you really want to do ...
}
dblclick
अपेक्षा के अनुरूप उत्पादन कार्य जारी है।
या, मोज़िला पर:
document.body.onselectstart = function() { return false; } // Or any html object
IE पर,
document.body.onmousedown = function() { return false; } // valid for any html object as well
document.body
।
पुराना धागा, लेकिन मैं एक समाधान के साथ आया था जो मुझे विश्वास है कि क्लीनर है क्योंकि यह हर वस्तु के लिए बाध्य नहीं है, और केवल पृष्ठ पर यादृच्छिक और अवांछित पाठ चयनों को रोकता है। यह सीधा है, और मेरे लिए अच्छा काम करता है। यहाँ एक उदाहरण है; जब मैं कक्षा "तीर-दाएं" के साथ ऑब्जेक्ट पर कई बार क्लिक करता हूं, तो मैं पाठ-चयन को रोकना चाहता हूं:
$(".arrow-right").hover(function(){$('body').css({userSelect: "none"});}, function(){$('body').css({userSelect: "auto"});});
HTH!
यदि आप किसी भी विधि के साथ-साथ केवल एक डबल क्लिक पर पाठ का चयन करने से पूरी तरह से रोकने की कोशिश कर रहे हैं, तो आप user-select: none
सीएसएस विशेषता का उपयोग कर सकते हैं । मैंने Chrome 68 में परीक्षण किया है, लेकिन https://caniuse.com/#search=user-select के अनुसार इसे अन्य सामान्य सामान्य उपयोगकर्ता ब्राउज़र में काम करना चाहिए।
व्यवहारिक रूप से, क्रोम 68 में यह बाल तत्वों द्वारा विरासत में मिला है, और तत्व के आसपास के पाठ का चयन करने पर भी किसी तत्व के निहित पाठ का चयन करने की अनुमति नहीं दी।