25

मैं HTML में एप्लिकेशन विकसित कर रहा हूं जो जावास्क्रिप्ट से console.log() को कॉल कर रहा है ताकि वेब पेज कोड में क्या होता है, इसके बारे में विकास के दौरान मुझे लॉग प्रदान कर सकें।एचटीसी एंड्रॉइड डिवाइस और एडब लॉककैट पर जावास्क्रिप्ट console.log()

दुर्भाग्यवश जब मैं adb logcat कमांड को लॉग जांचने के लिए उपयोग करता हूं तो मैं अन्य सभी अनुप्रयोगों से आउटपुट देख सकता हूं, लेकिन मेरे जावास्क्रिप्ट कोड से आउटपुट नहीं। मैं वेब ब्राउज़र से भी लॉग देख सकता हूं कि पेज लोड हो गया है, लेकिन वेब ब्राउज़र में निष्पादित मेरे जावास्क्रिप्ट कोड से console.log() आउटपुट नहीं है।

this page (http://developer.android.com/guide/webapps/debugging.html) पर जानकारी के अनुसार यह काम करना चाहिए।

मैं एचटीसी वाइल्डफायर और एचटीसी डिजायर एचडी पर परीक्षण कर रहा हूं।


(, फ़ोन, टीवी, सेट टॉप बॉक्स WebViews, UIWebViews ...) अधिक तो 6 महीने

कुछ समय और विभिन्न उपकरणों के साथ अनुभव के बाद के बाद संपादित मेरी सलाह करना है जावास्क्रिप्ट से रिमोट लॉगिंग और console.log() या अन्य विधियों पर निर्भर नहीं है - छवि लोडिंग here के साथ अच्छी चाल देखें।

प्रस्तुति को याद न करें here आशा है कि इससे मदद मिलती है! स्टेन

+0

कृपया अपना कोड प्रदान करें। क्या आपने ऊपर पोस्ट किए गए पेज पर एक कोशिश की है? – Thorben

+0

हाय, मैं कई स्थानों पर केवल जावास्क्रिप्ट केवल console.log() विधि से कॉल करता हूं, उदाहरण ** console.log ("[विवरण पर जाएं]"); **, और कुछ नहीं। Btw। मैं सेन्चा टच ढांचे का उपयोग कर रहा हूं, लेकिन किसी भी चीज़ को प्रभावित नहीं करना चाहिए ... – STeN

+0

मैं एक एचटीसी Droid अविश्वसनीय उपयोग कर रहा हूं और कंसोल.लॉग को सही ढंग से काम करने के लिए नहीं मिल सकता है। जब मैं एमुलेटर कंसोल.लॉग का उपयोग करता हूं तो ठीक से काम करता है और लॉगबैक में सबकुछ रूट करता है, लेकिन जब मैं सीधे अपने डिवाइस पर कोशिश नहीं करता हूं। – TheRightChoyce

उत्तर

29

एंड्रॉयड 2.3.3 पर डिफ़ॉल्ट ब्राउज़र में (और शायद पर फिर से) आप बस का उपयोग कर सकते में जावास्क्रिप्ट कंसोल बनाया:

  • ब्राउज़र को खोलने
  • अपने वेबपेज के लिए जाना
  • पता बार में
  • प्रकार about:debug और
  • आप डिबग विकल्पों के लिए एक अनुभाग देखेंगे पहले से ही दिखाई देते हैं यदि आप ब्राउज़र एप्लिकेशन की सेटिंग
  • टिक "शो JavaScript कंसोल" में जाने नहीं तो दर्ज कर मारा सक्षम
  • शीर्ष पर अपने वेबपेज

ताज़ा करते हैं, आप एक बार लेबल "JavaScript कंसोल" दिखाई देगा।

+0

यह बहुत अच्छा है। चल रहा है Android 2.1 Motorola Xoom वाईफ़ाई एंड्रॉयड 3.2 सैमसंग गैलेक्सी एस (SGH-I897) Android 2.2 सैमसंग गैलेक्सी एस (SGH-I897) चल चल: दुर्भाग्य से, यह Android उपकरणों मेरे पास है की किसी भी पर होना प्रकट नहीं होता है सैमसंग गैलेक्सी टैब (पहला वाला) एंड्रॉइड 2.1 जावास्क्रिप्ट सक्षम है। मुझे इस पर कोई "आधिकारिक" दस्तावेज नहीं मिल रहा है। क्या आप जानते हैं कि मुझे कुछ कहां मिल सकता है? मैं सोच रहा हूं कि मैं क्यों लापता हूं! धन्यवाद। – Jonathan

+1

धन्यवाद थ्रूफ्लो!यह नेक्सस एस पर एंड्रॉइड 2.3.6 चलाने के लिए मेरे लिए काम किया। मुझे यह समाधान पसंद है क्योंकि मैं सरल console.log() विधि का उपयोग कर रख सकता हूं (मुझे सरल पसंद है ;-), और जेएस लॉगिंग फ्रेमवर्क जोड़ने की आवश्यकता नहीं है। नोट: इसके बारे में टाइप करने के बाद: डीबग, मुझे यह समझने में एक मिनट लगा कि जावास्क्रिप्ट कंसोल उपलब्ध था। यह खिड़की के शीर्ष पर एक पतली पट्टी के रूप में दिखाई देता है। इसे छूने से इसे फैलाता है। – devdanke

+0

** + 1 ** मैं कभी भी 'डीबग' के बारे में नहीं जानता था – iConnor

0

निम्नलिखित का प्रयास करें:

1) उपकरणों टैब खोलें और यह सुनिश्चित करें कि डिवाइस कनेक्ट होने के चयनित है/पर प्रकाश डाला।

2) सुनिश्चित करें कि आपके डिवाइस पर यूएसबी डिबगिंग सक्षम है। यहां आपको इसके लिए क्या करना है:

2 ए) होम स्क्रीन से, मेनू दबाएं और फिर सेटिंग्स> एप्लिकेशन> विकास टैप करें।

2 बी) सुनिश्चित करें कि यूएसबी डिबगिंग चेक बॉक्स चयनित है।

+0

अपने ऐप को चलाने से पहले लॉग को भी साफ़ करें। कभी-कभी लॉगकैट बफर भर जाता है और यह तुरंत दिखाई देने वाले किसी भी लॉग को साफ़ करता है। (वे एक फ्लैश की तरह दिखाई देते हैं) –

4

लॉककैट आपके अलावा उपकरणों पर बहुत सारी चीज़ें उत्पन्न करता है ताकि आपको इसे फ़िल्टर करना पड़े।

यदि आप इसे टैग कर चुके हैं तो आप अपने लॉग आउटपुट को "grep" करने का प्रयास कर सकते हैं। उदाहरण के लिए: अपने लेख के अनुसार उत्पादन तरह दिखना चाहिए:

Console: Hello World http://www.example.com/hello.html :82 

आप कमांड का उपयोग करते हैं

adb logcat | grep -i "console" 
(यह मानते हुए कि आप एक लिनक्स, मैक ओएस या एक ग्रेप कमांड के साथ कुछ और प्रयोग कर रहे हैं)

यह आउटपुट को इन उद्धरण चिह्नों के भीतर निर्दिष्ट कीवर्ड में कम कर देगा। यदि आप अपने आउटपुट में एक अनूठा टैग जोड़ते हैं तो आप इसे फ़िल्टर भी कर सकते हैं ताकि आपको केवल वही चीज़ें मिलें जिन्हें आप देखना चाहते हैं।

[ctrl]+c 

इस लॉगक प्रक्रिया को रोक देगा।

3

इस देखें: How to display console.log() output in PhoneGap app using Eclipse and HTC Desire HD?

ऐसा लगता है कि console.log विकलांग Android 2.2 चला HTC उपकरणों पर है।

में remote debugging का उपयोग करके आप इसे प्राप्त कर सकते हैं।

+0

+1 jsconsole.com के लिए +1 जो कि मैं "रिमोट डीबगिंग" शब्दों की तुलना में कहीं अधिक आसानी से काम कर रहा हूं, आपको –

8

मैं एक ही समस्या थी, मैं इसे करने से हल निम्नलिखित:

appView.addJavascriptInterface(new JSBridge(), "JSBridge"); 

2/साथ वर्ग JSBridge बनाएँ:

1/जब आप अपने वेब दृश्य प्रारंभ, एक जावास्क्रिप्ट पुल वर्ग को जोड़ने एक लॉग समारोह

class JSBridge { 
    public void log(String msg){ 
    Log.d(msg); 
    } 
} 

3 अपने जावास्क्रिप्ट में/तुम अब कॉल कर सकते हैं

JSBridge.log("my log message"); 

आपकी समस्या के लिए एक सा overkill हो सकता है, लेकिन आप यह भी है कि समाधान

+0

पर विश्वास होगा जहां आपका वेबव्यू प्रारंभ करना है, जावास्क्रिप्ट ब्रिज क्लास जोड़ें? –

12

मैं तीन अलग अलग एचटीसी फोन का उपयोग किया गया है, लगभग विशेष रूप से के साथ एक बहुत कुछ कर सकते हैं, और इस मुद्दे था कभी नहीं किया है। यहां जांचने के लिए कुछ चीज़ें दी गई हैं:

  1. सुनिश्चित करें कि यूएसबी डिबगिंग सक्षम है।
  2. सुनिश्चित करें कि आपके वेबदृश्य में WebChromeClient सेट है। वेबव्यू में इस्तेमाल किया गया ब्राउज़र console.log() को लागू नहीं करता है।
  3. एडीबी लॉगकैट के आउटपुट को देखना आसान होना चाहिए, लेकिन इसे आसान बनाने के लिए, आउटपुट फ़िल्टर करें। यूएसबी डिबगिंग के बारे में

बारी:

  1. डिस्कनेक्ट अपने कंप्यूटर से अपने डिवाइस।
  2. सेटिंग्स पर जाएं -> एप्लिकेशन -> विकास -> "यूएसबी डिबगिंग सक्षम करें" का चयन करें
  3. कंप्यूटर पर प्लगइन करें। (सुनिश्चित करें कि आप सही ड्राइवरों एडीबी उपयोग करने के लिए स्थापित किया है - अधिक जानकारी: http://developer.android.com/guide/developing/device.html)

एक WebChromeClient कि onConsoleMessage() को ओवरराइड करता सेट करें:

//Set the output prefix so you can filter adb logcat results later 
public static final String TAG = "Your-Application-Name"; 

myWebView = (WebView) findViewById(R.id.webview); 

//Not going to have much luck running JS without this: 
myWebView.getSettings().setJavaScriptEnabled(true); 

//Override onConsoleMessage() to output to the Log. 
myWebView.setWebChromeClient(new WebChromeClient() { 
    @Override 
    public boolean onConsoleMessage(ConsoleMessage cm) { 
     Log.d(TAG, cm.message() + " -- From line " 
     + cm.lineNumber() + " of " 
     + cm.sourceId()); 
     return true; 
    } 
}); 

onConsoleMessage बारे में अधिक जानकारी() यहाँ : http://developer.android.com/reference/android/webkit/WebChromeClient.html#onConsoleMessage(java.lang.String, पूर्णांक, java.lang.String) सामान्य रूप में डिबगिंग यहाँ पर

और जानकारी: http://developer.android.com/guide/webapps/debugging.html

,210

फ़िल्टर adb logcat के उत्पादन:

adb logcat tag-name:log-level *:S 

टैग नाम स्ट्रिंग Log.x लॉग-स्तर में निर्दिष्ट से मेल खाता है आप संकेत दिया जब लॉग बुला लॉग स्तर से मेल खाता है।एक्स < ---

ऊपर कोड से संबंधित उदाहरण:

adb logcat Your-Application-Name:D *:S 

यह मिलान टैग, आपका-आवेदन-नाम के लिए सभी घ स्तर लॉग दिखाई देगा, और बाकी सब मौन। एशियाई विकास बैंक को छानने पर

अधिक जानकारी यहाँ: http://developer.android.com/guide/developing/tools/adb.html#logcat

आशा है कि यह मदद करता है! मुझे पता है कि यह अन्य उत्तरों का संक्षेप में थोड़ा सा था, लेकिन, तथ्य यह है कि इसे काम करने के लिए सभी कदम उठाए जाते हैं। :)

+0

मेरे पास एचटीसी डिजायर 2.3.3 है 'console.log' आउटपुट खा रहा है। 'onConsoleMessage' का उपयोग करके भी जेएस से लॉग नहीं मिल सकता है। – Xiao

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