2009-09-15 11 views
7

मैं बाएं माउस बटन को सिम्युलेट करके पृष्ठ पर टेक्स्ट का चयन करना चाहता हूं और इसे किसी निर्दिष्ट x, y स्थान (पिक्सल में)क्या मैं जावास्क्रिप्ट में माउस के साथ टेक्स्ट चयन अनुकरण कर सकता हूं?

जावास्क्रिप्ट के साथ किया जा सकता है?

उत्तर

10

मुझे लगता है कि जावास्क्रिप्ट का उपयोग करके माउस को नियंत्रित करने के लिए यह संभव नहीं है।

हालांकि, आप सीधे जावास्क्रिप्ट का उपयोग कर दस्तावेज़ के कुछ हिस्सों का चयन कर सकते हैं। उदाहरण के लिए:

var h3s = document.getElementsByTagName("h3"); 
var range = document.createRange(); 
range.selectNode(h3s[0]); 
window.getSelection().addRange(range); 

पहले एच 3 तत्व का चयन करेगा।

यह भी देखें: http://www.quirksmode.org/dom/range_intro.html भवनों के निर्माण के बारे में अधिक जानकारी के लिए।

एक दस्तावेज़ के पूरे शरीर को चुनने के लिए, आप का उपयोग कर सकते हैं:

var body = document.getElementsByTagName("body")[0]; 
var range = document.createRange(); 
range.selectNode(body); 
window.getSelection().addRange(range); 

की, कहते हैं 3 चरित्र, एक दस्तावेज़ में 4 पैरा चुनने के लिए, कोशिश:

var p4 = document.getElementsByTagName("p")[3].firstChild; 
var range = document.createRange(); 
range.setStart(p4, 2); 
range.setEnd(p4, 3); 
window.getSelection().addRange(range); 
+0

क्या मैं तत्व के मध्य तक भी चयन कर सकता हूं .. जैसे, अक्षर # 3? इसके अलावा, क्या आपका उदाहरण चुनने में सक्षम है कि शरीर तत्व कहें, जिसमें विभिन्न divs, fonts, आदि शामिल हैं? – thedp

+0

हां - संपादित पोस्ट देखें। – Andy

-3

जहां तक ​​मुझे पता है कि नहीं किया जा सकता है। एकमात्र पाठ जिसे आप चुन सकते हैं वह एक फॉर्म तत्व (टेक्स्टरी, इनपुट टेक्स्ट इत्यादि)

0
 
    /** 
    * Select text between 2 elements. Support selection of continuous elements. 
    * @param {Object} element1 begin element. 
    * @param {Object} element2 end element. 
    */ 
    function selectBetweenTwoElements(element1, element2) { 
     if (window.getSelection) { 
      /* all browsers, except IE 8 and IE 7 */ 
      var selection = window.getSelection(); 
      selection.removeAllRanges(); 
      var range = document.createRange(); 
      range.setStart(element1, 0); 
      range.setEnd(element2, 1); 
      selection.addRange(range); 
     } else { 
      /* works fine in IE 8/IE 7 */ 
      if (document.body.createControlRange) { 
       var range1 = document.body.createTextRange(); 
       range1.moveToElementText(element1); 

       var range2 = document.body.createTextRange(); 
       range2.moveToElementText(element2); 

       var range = document.body.createTextRange(); 
       range.setEndPoint("StartToStart", range1); 
       range.setEndPoint("EndToEnd", range2); 
       range.select(); 
      } 
     } 
    } 
संबंधित मुद्दे