8

मैं किसी वेब पेज पर टेक्स्ट चयन को ट्रैक करने का तरीका ढूंढ रहा हूं। जब भी चयन में कोई बदलाव होता है तो मुझे कुछ कोड निष्पादित करने की आवश्यकता होती है। मैंने इसे सभी प्रमुख डेस्कटॉप ब्राउज़र पर सफलतापूर्वक किया है, लेकिन यह एंड्रॉइड के लिए फ़ायरफ़ॉक्स पर काम नहीं कर रहा है।जावास्क्रिप्ट: एंड्रॉइड के लिए फ़ायरफ़ॉक्स पर चयन चयन बदलें

  1. "mouseup" घटना को पकड़ने और अगर वहाँ एक गैर खाली पाठ चयन है की जाँच की कोशिश की:

    मैं तीन दृष्टिकोण (! उनमें से कोई भी काम किया) की कोशिश की। समस्या "mouseup" नहीं मिल रही है अगर मूसडाउन-मूव-अप अनुक्रम के दौरान कोई चयन किया गया था!

  2. "touchend" ईवेंट के साथ ऐसा करने का प्रयास किया - वही परिणाम।
  3. "selectionchange" ईवेंट को पकड़ने का प्रयास किया। मैंने देखा कि यह नहीं है जब चयन बदलता है क्योंकि इसे सेट करने के लिए कॉन्फ़िगर कुंजी "dom.select_events.enabled" की आवश्यकता होती है। यह false डिफ़ॉल्ट रूप से है और मैं स्पष्ट रूप से मेरे आगंतुकों ब्राउज़र सेटिंग्स tweak करने के लिए :-)

इसके अलावा, के रूप में उम्मीद, पहले दो घटनाओं अगर चयन बढ़ाया या खींचकर कम हो जाता है शुरू हो रहा नहीं मिलता नहीं पूछ सकते हैं चयन शुरू/अंत मार्कर।

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

कोई भी विकल्प और/या सलाह बहुत उपयोगी होगी।

आप

+0

आप बॉडी/दस्तावेज़/एचटीएमएल के लिए माउसअप ईवेंट बाध्यकारी कहां हैं? उनके संयोजन का प्रयास करें। –

+0

बस इसे फ़ायरफ़ॉक्स मोबाइल पर परीक्षण किया गया और वास्तव में यह किसी भी घटना को ट्रिगर नहीं करता है>> – seahorsepip

+0

जब आप माउसअप ईवेंट का उपयोग करना शुरू कर देते हैं तो आप एक परामर्श बना सकते हैं और फिर एक्स सेकंड के लिए चयन नहीं होने पर प्रदूषक को हटा सकते हैं । यह चुनने के अलावा इसे हल करने के लिए किसी और चीज के बारे में सोच नहीं सकते हैं कि चयन सूची जल्द ही डिफ़ॉल्ट हो जाएगी:/ – seahorsepip

उत्तर

2

1) मूल निवासी पाठ चयन घटनाक्रम धन्यवाद

वर्तमान में, मतदान केवल काम के आसपास हो रहा है। हालांकि, selectionchange घटना is currently experimentally implemented in Firefox for Android Nightly। इसे dom.select_events.enabled ध्वज true पर सेट करके सक्षम किया जा सकता है (false पर डिफ़ॉल्ट)।

नाइटली बिल्ड में, यह ध्वज पहले से ही true पर डिफ़ॉल्ट है, इसलिए एक मौका है कि आप इसे सामान्य रूप से कुछ महीनों में उपयोग कर सकते हैं।

 

2) घटनाओं कि काम

(untested !!) का पता लगाएं

यहां तक ​​कि अगर onselectstart एंड्रॉयड अभी तक के लिए Firefox में उत्पादकता नहीं किया जा सकता, केवल व्यवहार्य आसान उपाय मतदान है ।

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

window.addEventListener('blur', function(){ 
    // start polling for text selections 
}); 

जब फोकस वापस दिया जाता है, मतदान रोका जा सकता है।

window.addEventListener('focus', function(){ 
    // stop polling 
}); 
जाँच करने के लिए

ब्राउज़र वास्तव में पाठ चयन घटनाओं, तो आप इस समारोह का उपयोग कर सकते का समर्थन करता है:

var browserSupportsTextSelectionEvents = function(){ 
    return !!('onselectstart' in document.body); 
} 

 

3) हैकिंग

एक तीसरा विचार करने के लिए है मोबाइल फ़ायरफ़ॉक्स उपयोगकर्ताओं के लिए सीएसएस (-moz-user-select: none) के माध्यम से टेक्स्ट चयन अक्षम करें, कस्टम टेक्स्ट सेलेक लागू करें टच स्टार्ट और एंड पोजीशन पर आधारित टयन फ़ंक्शन और मूल चयन को HTMLElement.setSelectionRange() के माध्यम से ब्राउजर पर वापस ले जाना।

+0

हाँ, मतदान अभी तक एकमात्र रास्ता प्रतीत होता है, कम से कम तब तक 'स्थिरता' स्थिर चैनल में अपनाया जाता है। परामर्शदाता को कब शुरू/बंद करने के संबंध में आपकी दक्षता संबंधी इनपुट के लिए धन्यवाद। हालांकि मैं अभी तक इसका परीक्षण नहीं कर रहा हूं, यह आगे की तरह दिखता है। धन्यवाद। – techfoobar

+0

मुझे लगता है कि "हैकिंग" विधि (3) सबसे आशाजनक है। मैं इसे आजमा नहीं सकता क्योंकि मेरे पास इसका परीक्षण करने के लिए कोई एंड्रॉइड + फ़ायरफ़ॉक्स नहीं है, लेकिन इस समाधान के साथ कोई मतदान की आवश्यकता नहीं है। 'Touchend' ईवेंट के बाद बस 'window.getSelection()' को हुक करें। यदि उपयोगकर्ता चयन सीएसएस के माध्यम से अक्षम किया गया है तो यह ईवेंट निकाल दिया जाएगा। – Gerald

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