تنظيم صفحاتك في مجموعات
يمكنك حفظ المحتوى وتصنيفه حسب إعداداتك المفضّلة.
يمكنك تصحيح أخطاء JavaScript باستخدام واجهات برمجة تطبيقات console JavaScript وعرض رسائل الإخراج في Logcat. إذا كنت معتادًا على تصحيح أخطاء صفحات الويب باستخدام Firebug أو Web Inspector، من المحتمل أنّك معتاد على استخدام console (مثل console.log()). يتيح إطار عمل WebKit في Android معظم واجهات برمجة التطبيقات نفسها، لذا يمكنك تلقّي السجلات من صفحة الويب عند تصحيح الأخطاء في WebView. يوضّح هذا القسم كيفية استخدام واجهات برمجة التطبيقات الخاصة بوحدة التحكّم لتحديد المشاكل وحلّها.
استخدام واجهات برمجة التطبيقات الخاصة بوحدة التحكّم في WebView
تتوفّر أيضًا واجهات برمجة التطبيقات الخاصة بوحدة التحكّم عند تصحيح الأخطاء في WebView. يجب توفير WebChromeClient ينفّذ الطريقة onConsoleMessage() لكي تظهر رسائل وحدة التحكّم في Logcat.
بعد ذلك، طبِّق WebChromeClient على WebView باستخدام setWebChromeClient(). لمزيد من المعلومات، يُرجى الاطّلاع على WebView
المستندات.
يوضّح المثال التالي كيفية استخدام واجهات برمجة التطبيقات الخاصة بوحدة التحكّم في WebView:
Kotlin
valmyWebView:WebView=findViewById(R.id.webview)myWebView.webChromeClient=object:WebChromeClient(){overridefunonConsoleMessage(message:ConsoleMessage):Boolean{Log.d("MyApplication","${message.message()} -- From line "+"${message.lineNumber()} of ${message.sourceId()}")returntrue}}
Java
WebViewmyWebView=findViewById(R.id.webview);myWebView.setWebChromeClient(newWebChromeClient(){@OverridepublicbooleanonConsoleMessage(ConsoleMessageconsoleMessage){Log.d("MyApplication",consoleMessage.message()+" -- From line "+consoleMessage.lineNumber()+" of "+consoleMessage.sourceId());returntrue;}});
يتضمّن ConsoleMessage أيضًا عنصر MessageLevel
للإشارة إلى نوع رسالة وحدة التحكّم التي يتم تسليمها. يمكنك طلب مستوى الرسالة باستخدام messageLevel() لتحديد مدى خطورة الرسالة، ثم استخدام طريقة Log المناسبة أو اتّخاذ إجراءات أخرى مناسبة.
سواء كنت تستخدم
onConsoleMessage(String, int, String) أو
onConsoleMessage(ConsoleMessage)، عندما تنفّذ طريقة وحدة تحكّم في صفحة الويب، يستدعي نظام التشغيل Android طريقة onConsoleMessage() المناسبة حتى تتمكّن من الإبلاغ عن الخطأ. على سبيل المثال، باستخدام الرمز النموذجي، ستتم طباعة رسالة Logcat
بالشكل التالي:
Hello World -- From line 82 of http://www.example.com/hello.html
بدِّل قناة WebView على جهاز الاختبار إلى قناة الإصدار التجريبي المثبَّتة.
انقر على مشغّل أدوات مطوري البرامج في WebView.
الشكل 1. رمز WebView DevTools للتطبيق المثبَّت على جهاز
من "أدوات مطوّري البرامج"، انقر على العنصر علامات وابحث عن أي ميزات تجريبية تريد تفعيلها أو إيقافها. وينطبق التغيير على جميع مثيلات WebView على الجهاز.
أوقِف تطبيقك وأعِد تشغيله لبدء الاختبار باستخدام الميزات الجديدة.
يخضع كل من المحتوى وعيّنات التعليمات البرمجية في هذه الصفحة للتراخيص الموضحّة في ترخيص استخدام المحتوى. إنّ Java وOpenJDK هما علامتان تجاريتان مسجَّلتان لشركة Oracle و/أو الشركات التابعة لها.
تاريخ التعديل الأخير: 2025-08-21 (حسب التوقيت العالمي المتفَّق عليه)
[[["يسهُل فهم المحتوى.","easyToUnderstand","thumb-up"],["ساعَدني المحتوى في حلّ مشكلتي.","solvedMyProblem","thumb-up"],["غير ذلك","otherUp","thumb-up"]],[["لا يحتوي على المعلومات التي أحتاج إليها.","missingTheInformationINeed","thumb-down"],["الخطوات معقدة للغاية / كثيرة جدًا.","tooComplicatedTooManySteps","thumb-down"],["المحتوى قديم.","outOfDate","thumb-down"],["ثمة مشكلة في الترجمة.","translationIssue","thumb-down"],["مشكلة في العيّنات / التعليمات البرمجية","samplesCodeIssue","thumb-down"],["غير ذلك","otherDown","thumb-down"]],["تاريخ التعديل الأخير: 2025-08-21 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["# Debug web apps\n\nYou can debug your JavaScript using the `console` JavaScript APIs and view the\noutput messages in Logcat. If you're familiar with debugging web pages with\nFirebug or Web Inspector, then you're probably familiar with using `console`\n(such as `console.log()`). Android's WebKit framework supports most of the same\nAPIs, so you can receive logs from your web page when debugging in your\n[`WebView`](/reference/android/webkit/WebView). This section describes how to use the console APIs for\ndebugging.\n| **Note:** You can also remotely debug your web pages in WebView with the Chrome Developer Tools. For more information, see [Remote debugging\n| WebViews](https://developer.chrome.com/docs/devtools/remote-debugging/webviews/).\n\nUse console APIs in WebView\n---------------------------\n\nThe console APIs are also supported when debugging in `WebView`. You must\nprovide a [`WebChromeClient`](/reference/android/webkit/WebChromeClient) that implements the\n[`onConsoleMessage()`](/reference/android/webkit/WebChromeClient#onConsoleMessage(android.webkit.ConsoleMessage)) method for console messages to appear in Logcat.\nThen, apply the `WebChromeClient` to your `WebView` with\n[`setWebChromeClient()`](/reference/android/webkit/WebView#setWebChromeClient(android.webkit.WebChromeClient)). For more information, see the [`WebView`](/reference/android/webkit/WebView)\ndocumentation.\n\nThe following example shows how to use console APIs in `WebView`: \n\n### Kotlin\n\n val myWebView: WebView = findViewById(R.id.webview)\n myWebView.webChromeClient = object : WebChromeClient() {\n\n override fun onConsoleMessage(message: ConsoleMessage): Boolean {\n Log.d(\"MyApplication\", \"${message.message()} -- From line \" +\n \"${message.lineNumber()} of ${message.sourceId()}\")\n return true\n }\n }\n\n### Java\n\n WebView myWebView = findViewById(R.id.webview);\n myWebView.setWebChromeClient(new WebChromeClient() {\n @Override\n public boolean onConsoleMessage(ConsoleMessage consoleMessage) {\n Log.d(\"MyApplication\", consoleMessage.message() + \" -- From line \" +\n consoleMessage.lineNumber() + \" of \" + consoleMessage.sourceId());\n return true;\n }\n });\n\n| **Warning:** Don't include personally-identifiable information (PII) in console messages.\n\nThe [`ConsoleMessage`](/reference/android/webkit/ConsoleMessage) also includes a [`MessageLevel`](/reference/android/webkit/ConsoleMessage.MessageLevel) object\nto indicate the type of console message being delivered. You can query the\nmessage level with [`messageLevel()`](/reference/android/webkit/ConsoleMessage#messageLevel()) to determine the severity of the\nmessage, then use the appropriate [`Log`](/reference/android/util/Log) method or take other appropriate\nactions.\n\nWhether you're using\n[`onConsoleMessage(String, int, String)`](/reference/android/webkit/WebChromeClient#onConsoleMessage(java.lang.String,%20int,%20java.lang.String)) or\n[`onConsoleMessage(ConsoleMessage)`](/reference/android/webkit/WebChromeClient#onConsoleMessage(android.webkit.ConsoleMessage)), when you execute a console method in\nyour web page, Android calls the appropriate `onConsoleMessage()` method so\nyou can report the error. For example, with the example code, a Logcat message\nis printed that looks like this: \n\n Hello World -- From line 82 of http://www.example.com/hello.html\n\n| **Note:** Logcat is a tool that dumps a log of system messages. The messages include a stack trace when the device throws an error as well as log messages written from your application and those written using the JavaScript `console` APIs. For more information, see [View logs with Logcat](/studio/debug/am-logcat).\n\nThe following are additional resources related to debugging:\n\n- [Remote debug Android devices](https://developer.chrome.com/docs/devtools/remote-debugging/)\n- [Debug your app](/studio/debug)\n\nTest experimental web features\n------------------------------\n\nSimilar to Google Chrome's `chrome://flags` page, you can also test experimental\nweb features in `WebView`.\n\nTo do this, take the following steps:\n\n1. [Install one of the `WebView` pre-release channels](https://chromium.googlesource.com/chromium/src/+/HEAD/android_webview/docs/prerelease.md)\n (beta, dev, or canary){:.external}.\n\n2. [Switch the `WebView` channel](https://chromium.googlesource.com/chromium/src/+/HEAD/android_webview/docs/prerelease.md#trichrome-beta) on your test device to the\n installed pre-release channel.\n\n3. Click the **WebView DevTools** launcher.\n\n **Figure 1.** WebView DevTools icon for app installed on a device.\n4. From DevTools, click the **Flags** item and search for any experimental\n features you'd like to enable or disable. The change applies to all\n `WebView` instances on the device.\n\n5. Stop and restart your app to start testing with the new features.\n\nFor more information about toggling flags, see the\n[`WebView` DevTools documentation](https://chromium.googlesource.com/chromium/src/+/HEAD/android_webview/docs/developer-ui.md#Flag-UI)."]]