समस्या डोमेन: Android WebView आधारित ePub प्रारूप पाठक -एंड्रॉयड 3.x केवल WebView पाठ चयन + जावास्क्रिप्ट
हम पाठ पर प्रकाश डाला जो JavaScript पद्धतियों के माध्यम से सुलभ हैं की जरूरत है (यानी, उन्हें मोड़ पर उन्हें बंद, उन्हें बचाने के उन्हें, आदि) जानकार
किसी को भी ईमेल, कृपया मुझे सही अगर मैं गलत हूँ: पाठ चयन के दौरान एक WebView पर -
असल में हम एक TextView उपरिशायी (WebTextView) जो कोई इन है सौंपी जाती हैं, अंतर्दृष्टि के अलावा अंतर्निहित एचटीएमएल से जुड़ा तरीका (इसे सब ठीक करने और इसे निर्बाध बनाने के लिए अच्छा काम, बीटीडब्ल्यू), ओ n जिसे हम TextSelectionActionMode और ClipboardManager निष्पादित करते हैं, परिणामों के साथ आपूर्ति की जाती है ... यह स्पष्ट करने के लिए, वेबव्यू के साथ वास्तविक HTML वास्तव में इस स्टॉक प्रक्रिया के दौरान किसी भी समय चयनित नहीं है, यही कारण है कि जावास्क्रिप्ट के परिणामों तक नहीं पहुंच सकता कार्य।
इसलिए इस व्यवहार को 3.1+ में काम करने के लिए, मेरे पास वेबव्यू पर अपना चयन लागू करने के लिए आगे बढ़ने की कुछ संभावित योजनाएं हैं - यह वह हिस्सा है जहां मैं सोच रहा हूं कि मैं अपने बारे में नहीं देख सकता कोने :) -
1) चयन मोड शुरू करने वाले लंबे क्लिक के MOTION_DOWN को कैप्चर करें, टेक्स्टस्लेक्शन एक्शनमोड में निर्मित ओवरराइड करें (क्लाइंट ब्रांडिंग का समर्थन करने के लिए - जिस तरह से मुझे ऐसा लगता है वह इतना हैकिश होता है) घड़ी ड्रैग करें, MOTION_UP स्थिति को कैप्चर करें, इन कॉर्ड को वेबव्यू पर मानचित्र करें, और मेरे चयन को कॉर्ड पर आधारित करें (क्लिपबोर्ड मैनेजर द्वारा कैप्चर किए गए पाठ की तुलना करते समय)
2) अपना खुद का "वेबटेक्स्टव्यू" (पूरे लॉटा वर्क लॉल) बनाएं और न ही-हैकिशली अपना एक्शनमोड बनाएं और उपरोक्त सभी को करें।
3) स्टॉक चयन प्रक्रिया द्वारा उत्पन्न मोशनवेन्ट्स का उपयोग करें और किसी भी तरह से स्टॉक द्वारा चयन किए गए टेक्स्टसेक्शन एक्शनमोड को ओवरराइड करें।
ये विकल्प मैं देख रहा हूँ कर रहे हैं उम्मीद है कि मेरी निकटता और हताशा इस के साथ एक सरल करने के लिए मुझे अंधा कर दिया है (पढ़ा है कि के रूप में निर्मित) समाधान या दो।
आपके समय के लिए फिर से धन्यवाद।
भरोसेमंद प्रतिबिंब दर्दनाक है, कम से कम कहने के लिए ... भरोसेमंद जावास्क्रिप्ट समान रूप से दर्दनाक है (जैसा कि अब मुझे पता है, मेरा समाधान 4.0 के वेब व्यू में टूट गया है, जैसा कि मैं टाइप करता हूं "कैसे" पर काम करता हूं) जावास्क्रिप्ट में, document.getSelection() चयन ऑब्जेक्ट देता है, जिससे आप दस्तावेज़ शर्तों https://developer.mozilla.org/en/DOM/window में वास्तविक स्थान एकत्र कर सकते हैं।getSelection (यह दस्तावेज़ या विंडो इंटरफ़ेस पर लागू होता है) मैं एंड्रॉइड दुनिया में प्रतिबिंब के माध्यम से व्युत्पन्न कुछ भी भरोसा नहीं करता; काफी सरलता से, वे इसे तोड़ देंगे। यह सब कहा जा रहा है, यह एक अच्छा बैकअप योजना है जावास्क्रिप्ट विफल होना चाहिए! – Dan
आप उस दस्तावेज़ को कैसे ट्रिगर कर रहे हैं .getSelection()? हमने मूल रूप से कोशिश की और पाया कि loadUrl ("जावास्क्रिप्ट: document.getSelection()") के माध्यम से जावास्क्रिप्ट लोड करना; चयन को स्पष्ट करने के कारण वहां कुछ भी नहीं था। – smokingoyster
आपको जावास्क्रिप्ट के साथ वेबव्यू के अंदर भारी भारोत्तोलन करने की आवश्यकता है, और एक प्रासंगिक (मेरे मामले में) पाइप-सीमांकित स्ट्रिंग को उस प्रासंगिक डेटा के साथ लौटाएं जिसके बाद आप हैं। यानी, जावास्क्रिप्ट के भीतर जेनरेट किए गए "फ़्लैटेड" चयन ऑब्जेक्ट के लिए रिसीवर के रूप में जावास्क्रिप्ट इंटरफेस का उपयोग करें। इसके अलावा, आप उस डेटा के साथ क्या कर रहे हैं (मैंने रीयल-टाइम चयन के लिए मेरा उपयोग किया है) के आधार पर, ध्यान रखें कि UI थ्रेड पर डिलीवरी आवश्यक होगी (क्योंकि यह संभवतः यूआई थ्रेड पर नहीं होगा) तो एक हैंडलर पैटर्न, अच्छी तरह से, आसान हो सकता है ... – Dan