2013-01-23 10 views
6

मेरे एंड्रॉइड एप्लिकेशन में, उपयोगकर्ता ViewPager का उपयोग करके कुछ HTML पेज ब्राउज़ कर सकता है, और उपयोगकर्ता हाइलाइट करने के लिए किसी तत्व को स्पर्श कर सकता है।एंड्रॉइड - जावास्क्रिप्ट: टचस्टार्ट ईवेंट ज़ूम या पृष्ठ को स्क्रॉल करने तक नहीं निकालता

समस्या तब होती है जब निम्न कोड का उपयोग करते हुए जावास्क्रिप्ट का उपयोग करके स्पर्श ईवेंट प्राप्त करने का प्रयास किया जाता है, तत्व नया पृष्ठ पर नेविगेट करते समय शून्य वापस लौटाता है, लेकिन उपयोगकर्ता पृष्ठ को ज़ूम करने या उस पर स्क्रॉल करने के बाद, यह सही काम करता है।

मुझे पता चला कि टचस्टार्ट ईवेंट का रजिस्टर ज़ूम या पृष्ठ को स्क्रॉल करने के बाद होता है। इसलिए यह काम करता है सही होने के बाद कि हालांकि यह $ पर पंजीकृत है (document) .ready()

 $(document).ready(function(){ 
      document.addEventListener("touchstart", touchstart, false);  
     });  

     function touchstart(e) {        
      var x = e.targetTouches[0].clientX; 
      var y = e.targetTouches[0].clientY;        
      el = document.elementFromPoint(x, y); 
      } 

आप जावास्क्रिप्ट बुला करने के बाद अपने जावा कोड में

उत्तर

7

लिखने अगले कोड धन्यवाद:

myWebview.scrollTo(1, 0); 
    myWebview.scrollTo(0, 0); 

या फिर ज़ूम इन करें

myWebview.zoomIn(); 
    myWebview.zoomOut(); 
+0

धन्यवाद, यह कोड अच्छी तरह से काम करता है, लेकिन क्यों? –

+0

सुंदर हैकी महसूस करता है, लेकिन यह काम करता है। वैसे, अगर आप ऑफस्क्रीन से अपने वेब व्यू को एनिमेट कर रहे हैं, तो एनीमेशन पूरा होने के बाद आपको कोड की इन पंक्तियों को चलाने की आवश्यकता होगी। मैंने इसे एनीमेटर में स्थापित किया है। एनीमेटर लिस्टनर() की ऑनएनीमेशन एंड विधि और यह बहुत अच्छा काम करता है। मैंने यह भी पुष्टि की कि यह तब भी काम करता है जब पृष्ठ की सामग्री स्क्रॉलिंग की आवश्यकता के लिए पर्याप्त नहीं है। –

+0

ब्रायन - क्या आपको याद है कि यदि वेब एनीमेशन पूर्ण हो गया है तो आप ज़ूमिन/ज़ूमआउट विधियों को पूरा करने के लिए इंतजार नहीं कर रहे थे? –

0

मोहम्मद अब्देल लतीफ के समाधान का उपयोग करके (जाहिर है यह अनाथा है एर लंग वेब व्यू बग) नीचे एंड्रॉइड 4.1.2 पर मेरे लिए यह तय किया गया है। नोट: मैंने एंड्रॉइड 4.4.2 पर इसका परीक्षण किया और यह हैक-टू-फ़िक्स-ए-बग की आवश्यकता नहीं है।

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 

    final WebView myWebView = (WebView) findViewById(R.id.mywebview); 
    myWebView.setHorizontalScrollBarEnabled(false); 
    myWebView.getSettings().setJavaScriptEnabled(true); 
    myWebView.loadDataWithBaseURL("file:///android_asset/", YOUR_HTML_GOES_HERE, "text/html", "utf-8", null); 

    myWebView.setWebViewClient(new WebViewClient() 
    { 
     // overcome the ontouchstart registration bug ! 
     @Override 
     public void onPageFinished(WebView view, String url) 
     { 
      super.onPageFinished(view, url); 
      final WebView myWebView = (WebView) findViewById(R.id.mywebview); 
      myWebview.scrollTo(1, 0); 
      myWebview.scrollTo(0, 0); 
     } 
    }); 
} 
संबंधित मुद्दे