WebView-এর মধ্যে কন্টেন্ট ডিবাগ করার জন্য জাভাস্ক্রিপ্ট কনসোল লগ দেখার বিভিন্ন পদ্ধতি এই ডকুমেন্টে বর্ণনা করা হয়েছে।
জাভাস্ক্রিপ্ট কনসোল অ্যাক্সেস করলে, WebView-এর মধ্যে কী ঘটছে তা নির্ণয় করার জন্য
আপনার জাভাস্ক্রিপ্ট console.log() স্টেটমেন্ট থেকে ত্রুটি, সতর্কতা এবং কাস্টম মেসেজ
দেখতে পারবেন। আপনার WebView-এর মাধ্যমে তৈরি করা জাভাস্ক্রিপ্ট কনসোল মেসেজ
দেখার তিনটি আলাদা উপায় আছে:
Chrome DevTools: Chrome DevTools-এর সাথে আপনার WebView কানেক্ট করুন। আপনার WebView জাভাস্ক্রিপ্ট কনসোল মেসেজ দেখতে কনসোল ট্যাব খুলুন।
WebView DevTools অ্যাপ: Logcat-এ কনসোল লগ দেখতে আপনার ডিভাইসে
webview-log-js-console-messagesফ্ল্যাগ চালু করতে WebView DevTools অ্যাপ ব্যবহার করুন।মেসেজ ইন্টারসেপশন: আপনার
WebChromeClient-এonConsoleMessage()প্রয়োগ করে জাভাস্ক্রিপ্ট কনসোল মেসেজ ইন্টারসেপ্ট করুন। এই পদ্ধতি নিম্নলিখিত বিভাগে বিস্তারিতভাবে আলোচনা করা হয়েছে।
আপনি যদি ডেভেলপমেন্ট মেশিনে লোকাল ওয়েব সার্ভার থেকে কন্টেন্ট পরিবেশন করেন, তাহলে ডিভাইস বা এমুলেটর থেকে কীভাবে কানেক্ট করবেন তা জানতে WebView থেকে লোকাল ডেভেলপমেন্ট সার্ভার অ্যাক্সেস করুন দেখুন।
onConsoleMessage()-এর মাধ্যমে মেসেজ ইন্টারসেপ্ট করুন
WebView ডিবাগ করার সময় কনসোল API কাজ করে। Logcat-এ কনসোল মেসেজ দেখানোর জন্য আপনাকে অবশ্যই একটি
WebChromeClient প্রদান করতে হবে যা onConsoleMessage() পদ্ধতি প্রয়োগ করে। তারপর, setWebChromeClient()-এর সাথে আপনার
WebView-এ WebChromeClient প্রয়োগ করুন।
WebChromeClient হল WebView-এর জন্য হেল্পার ক্লাস। এটি ওয়েব কন্টেন্টে ঘটা UI-সম্পর্কিত
ইভেন্ট ম্যানেজ করে, যেমন জাভাস্ক্রিপ্ট সতর্কতা দেখানো,
ওয়েব পেজের শীর্ষক পরিবর্তন করা এবং ব্রাউজারের কনসোলে পাঠানো
মেসেজ ম্যানেজ করা।
নিম্নলিখিত কোডটি জাভাস্ক্রিপ্ট কনসোল আউটপুট ইন্টারসেপ্ট করতে এবং আরও সহজে ডিবাগ করার জন্য সেগুলিকে Logcat-এ রিডাইরেক্ট করতে WebChromeClient কনফিগার করে।
Kotlin
val myWebView: WebView = findViewById(R.id.my_webview)
myWebView.webChromeClient = object : WebChromeClient() {
// Override onConsoleMessage to intercept JavaScript console messages
override fun onConsoleMessage(message: ConsoleMessage): Boolean {
// Log JavaScript console messages to Logcat
Log.d("WebViewConsole", "${message.message()} -- From line ${message.lineNumber()} of ${message.sourceId()}")
// Return true to indicate that the message has been handled
return true
}
}
জাভা
WebView myWebView = findViewById(R.id.webview);
myWebView.setWebChromeClient(new WebChromeClient() {
// Override onConsoleMessage to intercept JavaScript console messages
@Override
public boolean onConsoleMessage(ConsoleMessage consoleMessage) {
// Log JavaScript console messages to Logcat
Log.d("MyApplication", consoleMessage.message() + " -- From line " +
consoleMessage.lineNumber() + " of " + consoleMessage.sourceId());
// Return true to indicate that the message has been handled
return true;
}
});
onConsoleMessage() ব্যবহার করার মাধ্যমে, আপনার কাস্টম লগিং লজিক জাভাস্ক্রিপ্ট সংক্রান্ত সমস্যার জন্য প্রাথমিক
হ্যান্ডলার হয়ে যায়, webview-log-js-console-messages ফ্ল্যাগের ডিফল্ট অ্যাকশনকে
স্থান অধিকার করে এবং আপনি যেভাবে চান সেভাবে লগ ফর্ম্যাট করার সুবিধা
আপনাকে দেয়।
ConsoleMessage-এ MessageLevel অবজেক্টও অন্তর্ভুক্ত থাকে যা
প্রদান করা কনসোল মেসেজের ধরন নির্দেশ করে। মেসেজের গুরুত্ব নির্ধারণ করতে আপনি messageLevel()-এর মাধ্যমে মেসেজ লেভেল কোয়েরি করতে পারেন, তারপর
উপযুক্ত Log পদ্ধতি ব্যবহার করতে বা অন্যান্য উপযুক্ত অ্যাকশন নিতে পারেন।
আপনার ওয়েব পেজে কনসোল পদ্ধতি এক্সিকিউট করলে, Android
onConsoleMessage(ConsoleMessage) পদ্ধতি কল করে যাতে আপনি সমস্যার ব্যাপারে অভিযোগ জানাতে পারেন। যেমন, উদাহরণ কোডের সাথে, একটি Logcat মেসেজ প্রিন্ট করা হয় যা দেখতে
নিম্নলিখিতটির মতো হয়:
Hello World -- From line 82 of http://www.example.com/hello.html