2008-09-26 3 views
11

मैं एचटीएमएल/सीएसएस/जेएस में एक मेनू बना रहा हूं और मुझे डबल-क्लिक होने पर मेनू में टेक्स्ट को हाइलाइट करने से रोकने के लिए एक तरीका चाहिए। मुझे आईडी में कई divs को एक फ़ंक्शन में पास करने का तरीका चाहिए और उनमें से हाइलाइट करना बंद कर दिया गया है।जावास्क्रिप्ट में अपने युक्त div पर क्लिक करते समय पाठ को हाइलाइट करने से रोकने का सबसे अच्छा तरीका क्या है?

तो जब उपयोगकर्ता गलती से (या उद्देश्य पर) मेनू पर डबल क्लिक करता है, तो मेनू इसके उप-तत्व दिखाता है लेकिन इसका टेक्स्ट हाइलाइट नहीं करता है।

वेब पर चारों ओर तैरते हुए कई स्क्रिप्ट हैं, लेकिन कई पुराने लगते हैं। सबसे अच्छा तरीका क्या है?

+0

विस्तार किया गया है क्यों आप किसी उपयोगकर्ता का पाठ चयन को रोकने के लिए एक की जरूरत महसूस करते हैं? –

+0

मैं एक ऐसी ही सवाल था और पाया इस उपयोगी: http://stackoverflow.com/questions/3169786/clear-text-selection-with-javascript –

उत्तर

22

में (मोज़िला, फ़ायरफ़ॉक्स, कैमिनो, सफारी, गूगल क्रोम) आप इस का उपयोग कर सकते हैं:

div.noSelect { 
    -moz-user-select: none; /* mozilla browsers */ 
    -khtml-user-select: none; /* webkit browsers */ 
} 

IE के लिए कोई सीएसएस विकल्प है, लेकिन आप ondragstart घटना पर कब्जा कर सकते हैं और return false;

अद्यतन इस संपत्ति के लिए

ब्राउज़र समर्थन के बाद से 2008.

div.noSelect { 
    -webkit-user-select: none; /* Chrome all/Safari all */ 
    -moz-user-select: none;  /* Firefox all */ 
    -ms-user-select: none;  /* IE 10+ */ 
} 

https://css-tricks.com/almanac/properties/u/user-select/

+1

मोज़िला का अपना ब्राउज़र है? :) – CoderOfHonor

+0

मोज़िला "मोज़िला फ़ायरफ़ॉक्स" के साथ-साथ कैमिनो, और मूल मोज़िला ब्राउज़र के अंदर प्रतिपादन इंजन के लिए आंतरिक नाम है ... और इससे पहले नेटस्केप भी है। तो हाँ मोज़िला इसका अपना ब्राउज़र है लेकिन यह वास्तव में फ़ायरफ़ॉक्स में प्रयुक्त प्रस्तुतीकरण इंजन के रूप में जाना जाता है। – scunliffe

1

आप कर सकते हैं:

  • यह दे दो ("यह" किया जा रहा है अपने पाठ) एक onclick घटना
  • प्रथम क्लिक वर्तमान समय में एक चर सेट
  • दूसरा क्लिक जांच करता है कि कि चर रहा है देखने के लिए वर्तमान समय से एक्स समय (उदाहरण के लिए, 500 एमएमएस, डबल क्लिक के रूप में पंजीकृत नहीं है)
  • यदि यह एक डबल क्लिक है, तो छुपा HTML जोड़ने जैसे पृष्ठ पर कुछ करें , document.focus() कर रहा है। आपको इनके साथ प्रयोग करना होगा क्योंकि कुछ अवांछित स्क्रॉलिंग का कारण बन सकते हैं।
+1

आप एक नरम DRM के रूप में यह करने के लिए प्रयास कर रहे हैं कृपया विचार छोड़ दो! लोग नियंत्रण कर सकते हैं + या सिर्फ स्रोत पढ़ सकते हैं। – Oli

+0

धन्यवाद, लेकिन मुझे पता है कि एक और अधिक सुरुचिपूर्ण समाधान होना चाहिए। अब उस स्क्रिप्ट्स का काम टाइमर का उपयोग नहीं करता है। –

0

आशा है कि आप यही देख रहे हैं।

<script type="text/javascript"> 
function clearSelection() { 
var sel ; 
if(document.selection && document.selection.empty){ 
document.selection.empty() ; 
} else if(window.getSelection) { 
sel=window.getSelection(); 
if(sel && sel.removeAllRanges) 
sel.removeAllRanges() ; 
} 
} 
</script> 

<div ondblclick="clearSelection()">Some text goes here.</div> 
3

आप इस सीएसएस इस्तेमाल कर सकते हैं बस चयन रंग (आईई द्वारा समर्थित नहीं) को छिपाने के लिए:

#id::-moz-selection { 
background: transparent; 
} 

#id::selection { 
background: transparent; 
} 
संबंधित मुद्दे

 संबंधित मुद्दे