2011-06-14 15 views
11

अद्यतनक्रोम में निरंतर चयन?

मैं हाल ही में आप प्रोग्राम के जो निरंतर नहीं हैं क्रोम के साथ चयन, या तो जगह तत्वों/textnodes से बना सकते हैं की खोज की inbetween भागों में आप इसे नहीं चुना जाता है या छिपा हुआ चाहते हैं और फिर उन्हें दिखा।

क्रोम के लिए गैर-निरंतर चयन का उदाहरण: http://jsfiddle.net/niklasvh/YKJBW/

var t = $('div').contents().get(0); 


$.each(t.nodeValue.split(" "),function(i,e){ 
    t = t.splitText(e.length); 
    if (t.length>0){ 
    t = t.splitText(1); 
    } 
}); 



var c = $('div').contents(); 

$.each(c,function(i,e){  
    if (i>0){ 
    if (i%3) { }else{ 
      e.parentNode.replaceChild($('<unselect />').text(e.nodeValue).get(0),e);       
    }  
} 
}); 

$('unselect').hide(); 
window.setTimeout(function(){ 
    $('unselect').show();  
},0); 

हालांकि जब प्रतिलिपि घटना प्रदर्शन, पूरे चयन चयनित हो जाता है (भले ही इन-बीच अंतराल है), लेकिन निश्चित रूप से कॉपी ईवेंट होने से पहले चयन को प्रोग्रामेटिक रूप से बदलने के लिए उसी विधि का उपयोग किया जा सकता है।

अब मुश्किल हिस्सा यह है कि आप वास्तव में गैर-निरंतर चयन बनाने के लिए फ़ायरफ़ॉक्स में Ctrl दबाकर यह कार्यक्षमता उपयोग कर सकते हैं। उदाहरण में मैं जिस मौजूदा विधि का उपयोग करता हूं वह टेक्स्टनोड को कई टुकड़ों में तोड़ देता है, जो दृश्य उद्देश्यों के लिए कोई फर्क नहीं पड़ता। हालांकि, चयन को तोड़ने के लिए अतिरिक्त टैग का भी उपयोग किया जाता है, जहां तक ​​मैंने पाया है, हटाया नहीं जा सकता है। हालांकि, टेक्स्टनोड को हटाकर और उनके लिए नए स्थान जोड़कर एक ही कार्यक्षमता तक पहुंचा जा सकता है। समस्या यह है कि यह केवल अंतिम नोड को ध्यान में रखेगा, इसलिए यदि आपके चयन में एकाधिक रिक्त स्थान हैं, तो यह केवल आपके द्वारा लागू अंतिम डोम परिवर्तन को ध्यान में रखेगा।

क्या कोई भी गैर-निरंतर चयन लागू करने के लिए किसी भी गैर-दस्तावेज़ तोड़ने के तरीकों के बारे में सोच सकता है जो चयन और उसके तत्वों में कोई स्थायी परिवर्तन नहीं करता है?

मूल प्रश्न

यह चयन जो गूगल क्रोम में गैर सतत हैं बनाने के लिए संभव है?

<div>this is some random text</div>

यह एक चयन जो उदाहरण this is और text के लिए होता है के बीच पाठ बनाने का चयन रद्द किया बनाने के लिए संभव है: उदाहरण के लिए आप इस तरह पाठ के साथ एक तत्व है या नहीं?

यह एफएफ में ठीक काम करता प्रतीत होता है, जहां आप addRanges कर सकते हैं जो एक दूसरे के बगल में नहीं हैं, और चयन तदनुसार किया जाता है।

आईई के लिए, ऐसा कुछ भी प्रतीत नहीं होता है जो आपको कई श्रेणियों की अनुमति देता है, लेकिन आईई के चयन ऑब्जेक्ट में कई अन्य विधियां हैं जो इसके लिए क्षतिपूर्ति करती हैं।

गैर-निरंतर चयन के साथ, आप हमेशा एक क्रिया से एक निश्चित अनुभाग को चयन या प्रीपेड कर सकते हैं उदाहरण के लिए प्रतिलिपि क्रियाएं करते समय, या उपयोगकर्ता को उनके चयन के कुछ हिस्सों को अचयनित करने के लिए बाध्य करते हैं, जिन्हें आप नहीं चाहते हैं प्रतिलिपि बनाना।

गैर सतत चयन का उदाहरण:

enter image description here

working example (FF4 में कम से कम काम कर रहे)।

संपादित चयन के एक ही प्रकार मैन्युअल रूप से करने के लिए, आप फ़ायरफ़ॉक्स के साथ ctrl दबाए रखें और विभिन्न स्थानों में पाठ खींच शुरू कर सकते हैं, लेकिन क्रोम पर यह प्रदर्शन कर काम नहीं करता।

संपादित 2 मैं this और this यह राशि अप काफी अच्छी तरह से लगता है। ऐसा लगता है कि वेबकिट ब्राउज़र के संबंध में जहां तक ​​कुछ भी उम्मीद नहीं की जा रही है।

+0

यह एक कोड प्रश्न है, यह जावास्क्रिप्ट के बारे में है - ऊपर देखें: जहां आप 'addRanges' –

+1

कह सकते हैं, इनमें से कोई भी उदाहरण आपके उपयोगकर्ताओं को परेशान करने के अलावा अन्य किसी भी चीज़ के लिए उपयोगी नहीं है। (प्लस साइड पर, अब मुझे पता है कि यह करने वाली साइटें यह कैसे कर रही हैं मैं काउंटरमेजर्स पर काम कर सकता हूं) – Random832

+1

@ Random832 कुछ क्लाइंट कुछ सामग्री को प्रतिलिपि बनाने से बचाना चाहते हैं, और उस सामग्री को अपने क्लिपबोर्ड से हटाने के बजाय इसे हटाने का प्रयास करना चाहते हैं उदाहरण के लिए छवियों में सभी सामग्री, निश्चित रूप से अधिक "उपयोगकर्ता के अनुकूल" समाधान की तरह ध्वनि। जहां तक ​​काउंटर उपाय चलते हैं, क्लाइंट साइड पर किए गए कुछ भी हमेशा छेड़छाड़ किए जा सकते हैं, यह असंभव बनाने के बारे में कोई सवाल नहीं है, लेकिन उपयोगकर्ताओं को यह ध्यान में रखते हुए कि वे कुछ कर रहे हैं, उन्हें नहीं करना चाहिए। – Niklas

उत्तर

4

नहीं। एकाधिक चयनित श्रेणियों का समर्थन करने के लिए फ़ायरफ़ॉक्स एकमात्र मुख्यधारा का ब्राउज़र है। मुझे लगता है कि इसके लिए मुख्य उपयोग केस टेबल के भीतर अलग-अलग स्तंभों के चयन की अनुमति देना था, जो अन्यथा संभव नहीं है।

वेबकिट जल्द से जल्द कई चयनित श्रेणियों का समर्थन करने की योजना नहीं बना रहा है, जो मैं एकत्र कर सकता हूं। आईई ने आईई 9 के लिए अपनी रेंज और चयन एपीआई को ओवरहाल किया और इसे कार्यान्वित नहीं किया। इस बारे में कोई जानकारी नहीं है कि ओपेरा के पास इसका समर्थन करने की कोई योजना है या नहीं। कुछ जानकारी के लिए this thread from the WHATWG mailing list देखें:

0

नहीं, एकाधिक टेक्स्ट अवधि चयन की कोई अवधारणा नहीं है। चयन कैरेट से जुड़ा हुआ है। एक देखभाल - एक चयन।

+0

यदि ऐसा है, तो यह फ़ायरफ़ॉक्स के साथ कैसे काम कर रहा है? निश्चित रूप से ब्राउज़र में से एक गलत तरीके से कर रहा है, या परिणाम सुसंगत होंगे? – Niklas

+0

@ निकलास: ईमानदार होने का कोई विचार नहीं है। पाठ चयन में दो बिंदु एंकरपॉस और caretPos शामिल हैं। तो यदि आपके पास चयन है और बाएं/दाएं कोने में ले जाया जाएगा तो चयन गिरा दिया जाएगा और देखभाल बिंदु को संदर्भ बिंदु के रूप में उपयोग किया जाएगा। मुझे नहीं पता कि उसके साथ कितने चयन खेलेंगे। –

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