জাভাস্ক্রিপ্ট কনসোল লগ ব্যবহার করে ডিবাগ করুন

এই ডকুমেন্টটি WebView-এর মধ্যে কন্টেন্ট ডিবাগ করার জন্য JavaScript কনসোল লগ দেখার বিভিন্ন পদ্ধতি বর্ণনা করে।

জাভাস্ক্রিপ্ট কনসোল অ্যাক্সেস করলে আপনি আপনার জাভাস্ক্রিপ্ট console.log() স্টেটমেন্ট থেকে ত্রুটি, সতর্কতা এবং কাস্টম বার্তা দেখতে পারবেন এবং WebView এর ভিতরে কী ঘটছে তা নির্ণয় করতে পারবেন। আপনার WebView দ্বারা তৈরি জাভাস্ক্রিপ্ট কনসোল বার্তাগুলি দেখার তিনটি ভিন্ন উপায় রয়েছে:

  • Chrome DevTools : আপনার WebView কে Chrome DevTools এর সাথে সংযুক্ত করুন । আপনার WebView JavaScript কনসোল বার্তাগুলি দেখতে Console ট্যাবটি খুলুন।

  • WebView DevTools অ্যাপ : Logcat-এ কনসোল লগ দেখতে আপনার ডিভাইসে webview-log-js-console-messages ফ্ল্যাগ সক্ষম করতে WebView DevTools অ্যাপ ব্যবহার করুন।

  • মেসেজ ইন্টারসেপশন : আপনার WebChromeClientonConsoleMessage() প্রয়োগ করে জাভাস্ক্রিপ্ট কনসোল মেসেজ ইন্টারসেপ করুন। এই পদ্ধতিটি নিম্নলিখিত বিভাগে বিস্তারিতভাবে বর্ণনা করা হয়েছে।

যদি আপনি আপনার ডেভেলপমেন্ট মেশিনে স্থানীয় ওয়েব সার্ভার থেকে কন্টেন্ট পরিবেশন করেন, তাহলে ডিভাইস বা এমুলেটর থেকে কীভাবে এটির সাথে সংযোগ স্থাপন করবেন তা জানতে WebView থেকে স্থানীয় ডেভেলপমেন্ট সার্ভার অ্যাক্সেস করুন দেখুন।

onConsoleMessage() ব্যবহার করে বার্তাগুলিকে আটকান

WebView ডিবাগ করার সময় কনসোল API গুলি সমর্থিত। Logcat-এ কনসোল বার্তাগুলি প্রদর্শিত হওয়ার জন্য আপনাকে একটি WebChromeClient প্রদান করতে হবে যা onConsoleMessage() পদ্ধতি প্রয়োগ করে। তারপর, setWebChromeClient() দিয়ে আপনার WebViewWebChromeClient প্রয়োগ করুন।

WebChromeClient হল WebView এর সহায়ক ক্লাস। এটি ওয়েব কন্টেন্টে ঘটে যাওয়া UI-সম্পর্কিত ইভেন্টগুলি পরিচালনা করে যেমন, জাভাস্ক্রিপ্ট সতর্কতা দেখানো, ওয়েব পৃষ্ঠার শিরোনাম পরিবর্তন করা এবং ব্রাউজারের কনসোলে প্রেরিত বার্তা পরিচালনা করা।

নিম্নলিখিত কোডটি একটি WebChromeClient জাভাস্ক্রিপ্ট কনসোল আউটপুটগুলিকে আটকাতে এবং সহজে ডিবাগিংয়ের জন্য Logcat-এ পুনঃনির্দেশিত করতে কনফিগার করে।

কোটলিন

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 পদ্ধতি ব্যবহার করতে পারেন অথবা অন্যান্য উপযুক্ত পদক্ষেপ নিতে পারেন।

যখন আপনি আপনার ওয়েব পেজে একটি কনসোল পদ্ধতি কার্যকর করেন, তখন অ্যান্ড্রয়েড onConsoleMessage(ConsoleMessage) পদ্ধতিটি কল করে যাতে আপনি ত্রুটিটি রিপোর্ট করতে পারেন। উদাহরণস্বরূপ, উদাহরণ কোডের সাহায্যে, একটি Logcat বার্তা প্রিন্ট করা হয় যা দেখতে নিচের মতো:

Hello World -- From line 82 of http://www.example.com/hello.html