2010-01-15 13 views
6

मैं दस्तावेज़ चयन (वर्तमान में माउस या कीबोर्ड द्वारा चुने गए उपयोगकर्ता) को संशोधित करना चाहता हूं, इसे क्रॉस ब्राउज़र तरीके से कैसे करना है?जावास्क्रिप्ट में दस्तावेज़ चयन को कैसे संशोधित करें?

+2

क्या आप "दस्तावेज़ चयन संशोधित करें" के बारे में अधिक विशिष्ट हो सकते हैं? – sberry

+0

उपयोगकर्ता वर्तमान में माउस या कीबोर्ड द्वारा चुना गया है .... क्या यह स्पष्ट है? मेरी खराब अंग्रेजी के लिए माफी चाहूंगा। – lovespring

+0

http://stackoverflow.com/questions/2075304/how-to-modify-the-document-selection-in-javascript देखें, बस iframe.window.selection का उपयोग करें। –

उत्तर

6

मैंने वास्तविक सहायता प्रदान करने के लिए पर्याप्त टेक्स्ट चयन के साथ काम नहीं किया है, लेकिन आप जो करने की कोशिश कर रहे हैं, वह किया जा सकता है। आप निम्नलिखित दो कार्यों को देखना चाहेंगे:

  1. createRange()MSDN | MDC
  2. getRangeAt()MDC

मैं जानता हूँ कि यह पार ब्राउज़र लागू किया जा सकता। आप कार्रवाई यहाँ में इसके बारे में कुछ देख सकते हैं:

http://fuelyourcoding.com/a-few-strategies-for-using-javascript/

निचले हिस्से तक स्क्रॉल और हाथी चिह्न है, जो Evernote के स्क्रिप्ट का उपयोग करता क्लिक करके। हालांकि, मेरी स्क्रिप्ट पहले मुख्य सामग्री क्षेत्र का चयन करती है (आप इसे फ्लैश नारंगी देखेंगे) और उसके बाद कैप्चर किए जाने के बाद यह अचयनित हो जाता है।

यहां एक मिनी jQuery प्लगइन है जो यह करता है। यह किसी साइट से मेरे द्वारा अनुकूलित किया गया था, और टिप्पणियों की तरह कहते हैं, मुझे याद रखने के लिए भयानक लग रहा है। इसका वास्तव में नोट करना महत्वपूर्ण मैं यह jQuery के लिए अनुकूलित है, लेकिन कोड कुछ साइट से आया है जहां वे इसे कैसे करना समझाया:

// Adapted this from somewhere. Feel horrible for not remembering. 
$.fn.autoSelect = function(){ 
    var selectTarget = this[0]; // Select first element from jQuery collection 
    if(selectTarget != null) { 
     if(selectTarget.tagName == 'TEXTAREA' || (selectTarget.tagName == "INPUT" && selectTarget.type == "text")) { 
      selectTarget.select(); 
     } else if(window.getSelection) { // FF, Safari, Opera 
      var sel = window.getSelection(); 
      var range = document.createRange(); 
      range.selectNode(selectTarget); 
      sel.removeAllRanges(); 
      sel.addRange(range); 
     } else { // IE 
      document.selection.empty(); 
      var range = document.body.createTextRange(); 
      range.moveToElementText(selectTarget); 
      range.select(); 
     }; 
    }; 
    return this; // Don't break the chain 
}; 

ऐसा लगता है इस स्क्रिप्ट में कुछ स्थानों है ऑनलाइन, लेकिन here is another variation on it

5

एक उदाहरण के रूप में, और सबसे आसान, मान लें कि आप किसी तत्व की सामग्री को शामिल करने के लिए उपयोगकर्ता के चयन को स्थानांतरित करना चाहते हैं। निम्नलिखित सभी प्रमुख ब्राउज़रों में काम करेंगे:

function selectElementContents(el) { 
    var body = document.body, range, sel; 
    if (body.createTextRange) { 
     range = body.createTextRange(); 
     range.moveToElementText(el); 
     range.select(); 
    } else if (document.createRange && window.getSelection) { 
     range = document.createRange(); 
     range.selectNodeContents(el); 
     sel = window.getSelection(); 
     sel.removeAllRanges(); 
     sel.addRange(range); 
    } 
} 

selectElementContents(document.getElementById("someElement")); 
+0

धन्यवाद, टिम। – lovespring

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