2009-07-16 14 views
10

मैं एक साधारण फ़ायरफ़ॉक्स एक्सटेंशन पर काम कर रहा हूं और मैं चयनित टेक्स्ट प्राप्त करना चाहता हूं। मैं इस की कोशिश की:फ़ायरफ़ॉक्स एक्सटेंशन: चयनित टेक्स्ट प्राप्त करें

var WordCount = { 
    /* ... */ 
    changeSelected: function() { 
     var selectedText = this.getSelection(); 
     var words = this.countWords(selectedText); 
     this.changeStatus(words, " selected"); 
     //alert(selectedText); 
    }, 
    getSelection: function(e) { 
     var focused_window = document.commandDispatcher.focusedWindow; 
     var sel_text = focused_window.getSelection(); 
     return sel_text.toString();  
    } 
} 
window.addEventListener("select", function(e) { WordCount.changeSelected(); }, false); 

समस्या यह है कि मैं) document.commandDispatcher.focusedWindow.getSelection (साथ चयन मिल न और मैं नहीं जानता कि क्यों :(

+0

element.value.substring (element.selectionStart, element.selectionEnd) के साथ इसे बदलने का प्रयास करें; काम किया। – Fu86

उत्तर

10

आपका समस्या यह है कि document.commandDispatcher.focusedWindow एक क्रोम खिड़की की ओर इशारा करते जा रहा है, जहां मैं है संदेह है कि आप वास्तव में एक सामग्री खिड़की चाहते हैं। content.getSelection()

+0

मुझे यह नोटिस करना पड़ा कि मैं एक टेक्स्टरेरा में चयनित टेक्स्ट प्राप्त करना चाहता हूं। यह केवल चयन स्टार्ट और चयन अंत के साथ काम किया। – Fu86

0

यह फ़ायरफ़ॉक्स में काम करता है JavaScripting, तो ठीक

window.getSelection().toString(); 

मेरा अनुमान है document.commandDispatcher.focusedWindow विफल रहता है कि

0

वें है है होना चाहिए एक सामान्य फ़ायरफ़ॉक्स एक्सटेंशन है या यह एक जेटपैक फ़ायरफ़ॉक्स एक्सटेंशन है।

जेटपैक में यह

var doc = jetpack.tabs.focused.contentWindow; 
if (doc.wrappedJSObject){ //This just checks if Firefox has put a XPCNativeWrapper around it for security 
    win = doc.wrappedJSObject; 
} 

होगा या तुम सिर्फ dcaunt तरह का सुझाव दिया

window.getSelection() के साथ सीधे खिड़की का उपयोग कर सकते
संबंधित मुद्दे