2011-02-26 5 views
13

मैं वेबव्यू में किसी भी लिंक क्लिक को पकड़ने के लिए WebViewClient.shouldOverrideUrlLoading का उपयोग कर रहा हूं। यह लगभग 9 5% समय काम करता है, लेकिन कभी-कभी इसे आसानी से नहीं कहा जाता है।चाहिएऑवरराइडउर्ल लोडिंग पृष्ठ लोड होने पर लिंक क्लिक/काम नहीं करता है

मैं इन तीन परिस्थितियों में यह देखा है:

  1. पेज के लिए लिंक अंक वे पर पहले से ही कर रहे हैं। यह वास्तव में एक बड़ा सौदा नहीं है, और bug reported for it है।
  2. हालांकि पृष्ठ अभी भी लोड हो रहा है, यदि उपयोगकर्ता किसी लिंक पर क्लिक करता है, तो यह शायद ही कभी इसे पकड़ लेता है। यह कभी भी shouldOverrideUrlLoading पर कॉल किए बिना लिंक खुल जाएगा।
  3. यादृच्छिक रूप से। पिछले कुछ महीनों में इस के साथ प्रयोग करते समय मैंने देखा है कि कभी-कभी यह इसे पकड़ नहीं लेता है। यह दुर्लभ है लेकिन ऐसा होता है।

अब मेरा प्रश्न अधिकतर समस्या 2 को ठीक करने का तरीका है, क्योंकि अन्य एक बड़े सौदे से कम हैं। हालांकि, अगर किसी ने 1 या 3 हल किया है तो मुझे इसके बारे में सुनना अच्छा लगेगा।

इसके अलावा, मुझे यह उल्लेख करना चाहिए कि मैंने shouldOverrideUrlLoading में अलग-अलग रिटर्न मानों का प्रयास किया है और मैंने देखा है कि हमेशा सत्य लौटने का सबसे अच्छा परिणाम होता है, लेकिन उपरोक्त मुद्दे अभी भी होते हैं।

+0

'window.location' को संशोधित करने वाले पृष्ठ पर जेएस के साथ वेबपृष्ठ बदलने की कोशिश करते समय मुझे एक ही समस्या आई है। यह पता चला है कि यूआरएल योजना/प्रोटोकॉल को संशोधित करने से वेबवेव को 'चाहिएऑवर्राइडउर्ल लोडिंग' पर पकड़ मिलती है। –

+0

आप स्वीकार करते हैं कि स्वीकृत उत्तर पर एक टिप्पणी में, समस्या का कारण आपके तर्क में था। आपने कभी भी वास्तविक समस्या का जिक्र नहीं किया है। मुझे यह समस्या है, और गुगल से ऐसा लगता है कि मैं अकेला नहीं हूं। क्या आप एक पल छोड़ना चाहते हैं और हमें बताएंगे कि आपने इसे कैसे हल किया? – mickey

+0

@ मिकी, इसे इंगित करने के लिए धन्यवाद। उसके लिए माफ़ करना! मैंने नीचे एक प्रतिक्रिया लिखा है। (स्वीकृत उत्तरों टिप्पणियों में) – cottonBallPaws

उत्तर

7

यदि एचटीएमएल स्वयं है, तो आप addJavascriptInterface() के माध्यम से WebView में इंजेक्शन किए गए सभी पारंपरिक लिंक को अपने स्वयं के जावा ऑब्जेक्ट में बदल सकते हैं। तब आप shouldOverrideUrlLoading() पर निर्भर नहीं रहेंगे।

अन्यथा, शायद उपयोगकर्ता को पृष्ठ के साथ onPageFinished() तक बातचीत करने से रोकने का प्रयास करें।

मैंने इस समस्या में भाग नहीं लिया है, लेकिन मैंने मनमाने ढंग से सामग्री के साथ WebView का व्यापक उपयोग नहीं किया है।

+0

सुझावों के लिए धन्यवाद। दुर्भाग्यवश इस मामले में एचटीएमएल मेरा नहीं है और मैं उपयोगकर्ता को अवरुद्ध नहीं कर सकता क्योंकि कुछ पेज उपयोगकर्ता के लिए काफी उपयोगी होने के बाद कुछ समय के लिए "लोडिंग" कर रहे हैं। तो यह एक बहुत ही निराशाजनक यूआई अनुभव होगा। यह मेरे लिए काफी 100% पुनरुत्पादित है।वेबव्यू में यूआरएल लोड करें और लोड होने के दौरान, एक लिंक दबाएं, और यह ओवरराइड कॉल पर बस छोड़ देता है। – cottonBallPaws

+0

यह कुछ तर्कों में एक दोष होने लगा, जो मैंने नहीं पकड़ा था। मैं आपको जवाब दूंगा क्योंकि आपके पास कुछ अच्छे सुझाव थे। धन्यवाद। – cottonBallPaws

+1

@littleFluffyKitty आप जिस तर्क के बारे में बात कर रहे हैं उसमें त्रुटियां क्या हैं? आपको उन्हें लिखना चाहिए। – ThomasW

5

मुझे पृष्ठ पर जेएस के साथ वेबपृष्ठ बदलने की कोशिश करते समय एक ही समस्या आई है जो window.location को संशोधित करता है। यह पता चला है कि यूआरएल योजना/प्रोटोकॉल को संशोधित करने से वेबव्यू shouldOverrideUrlLoading पर पकड़ लेता है। मुझे पता है कि यह आपकी मदद नहीं करता है क्योंकि आपके पास HTML का स्वामित्व नहीं है, लेकिन मैंने सोचा कि इससे किसी और की मदद मिलेगी जो इस समस्या पर ठोकर खाती है।

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