2012-01-24 15 views
13

असल में मुझे यह जानने की जरूरत है कि window.getSelection() बदल गया है और इस घटना में एक हैंडलर बांधना है। विचार?विंडो पर चयन परिवर्तन के लिए हैंडलर को कैसे बांधें?

ओबीएस: कृपया ध्यान दें कि मैं एक इनपुट या टेक्स्टटेरा पर चयन परिवर्तन को बाध्य नहीं कर रहा हूं। मैं खिड़की में किसी भी चयन के बारे में बात कर रहा हूँ।

+0

के संभावित डुप्लिकेट (http://stackoverflow.com/questions/5139623 [कैसे जावास्क्रिप्ट में खिड़की चयन परिवर्तन घटना पर नजर रखने के]/कैसे-टू-मॉनिटर-विंडो-चयन-परिवर्तन-घटना-इन-जावास्क्रिप्ट) –

+2

डुप्लिकेट नहीं है क्योंकि मुझे विंडो चयन ईवेंट की निगरानी करने की आवश्यकता है, इनपुट –

+0

के लिए नहीं, असल में मुझे लगता है कि यह एक डुप्लिकेट है, जैसा कि अन्य प्रश्न है ऐसा लगता है कि एक ही चीज़ को अपरिहार्य रूप से पूछना प्रतीत होता है, लेकिन जवाब हैं उपयोगी नहीं। एक बेहतर डुप्लिकेट यह है: http://stackoverflow.com/questions/8442158/selection-change-event-in-contentitable –

उत्तर

-1

मुझे लगता है कि यह मदद मिलेगी

function foo() { 
    var selObj = window.getSelection(); 
    alert(selObj); 
    var selRange = selObj.getRangeAt(0); 
    // work something with selObj 
} 
+0

चयन में परिवर्तन होने पर इसे कैसे कहा जाएगा? यह समस्या है, चयन नहीं मिल रहा है। –

17

चयन में परिवर्तन का पता लगाने का कोई पार ब्राउज़र तरीका नहीं है। आईई (संस्करण 5.5 के बाद से, मुझे लगता है) और वेबकिट/ब्लिंक ब्राउज़र (उदाहरण के लिए पिछले कुछ वर्षों से क्रोम, सफारी और ओपेरा संस्करण) selectionchange ईवेंट document पर समर्थन करता है जो वास्तव में आप चाहते हैं।

फ़ायरफ़ॉक्स और प्री-ब्लिंक ओपेरा में ऐसी कोई घटना नहीं है और आप जो भी कर सकते हैं वह कीबोर्ड और माउस ईवेंट के माध्यम से किए गए चयन परिवर्तनों का पता लगाता है, जो असंतोषजनक है (संदर्भ से "सभी का चयन करें" या मेनू संपादित करने का कोई तरीका नहीं है, उदाहरण के लिए), या बस Selection ऑब्जेक्ट को window.getSelection() द्वारा लौटाया गया है (चयन के anchorNode, anchorOffset, focusNode और focusOffset गुणों को उनके पिछले मानों के विरुद्ध पर्याप्त होना चाहिए)।

+1

अपडेट: ओपेरा अब चयन का समर्थन करता है (ब्लिंक पर स्विच के बाद से)। काम के लिए, मैंने हाल ही में फ़ायरफ़ॉक्स के लिए एक हल्के चयन चयन पॉलीफिल लिखा था। https://github.com/2is10/selectionchange-polyfill फ़ायरफ़ॉक्स सुविधा अनुरोध ट्रैकिंग उद्देश्यों के लिए: https://bugzilla.mozilla.org/show_bug.cgi?id=571294 – jaredjacobs

+0

@jaredjacobs: धन्यवाद। मैंने इसे अपने जवाब में शामिल किया है। –

+1

यह एफएफ 43 में आया, लेकिन आपको अभी भी एक झंडा बदलने की जरूरत है। जल्द ही उपलब्ध होना चाहिए। https://developer.mozilla.org/en-US/docs/Web/Events/selectionchange#Browser_compatibility –

9

इसके लिए कोई क्रॉस-ब्राउज़र ईवेंट नहीं है।

हालांकि, selectionchange नामक एक ईवेंट मौजूद है, जो दस्तावेज़ में चयन में हर बदलाव पर ट्रिगर करता है, लेकिन यह केवल आईई और हाल ही में वेबकिट (क्रोम/सफारी) में समर्थित है, इसलिए कोई फ़ायरफ़ॉक्स/ओपेरा नहीं है।

आप selectionchange घटना इस तरह उपयोग कर सकते हैं:

$(document).on('selectionchange', function(e) { 
    console.log('selectionchange', e.originalEvent); 
}); 

jsfiddle example

+0

^यह। हालांकि, यह बेहद लालची है और दूसरी बार कई बार आग लग सकती है, 'window.onresize' के समान। – Kafoso

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