【问题标题】:Auto fill field in WebView using javascript fails使用 javascript 在 WebView 中自动填充字段失败
【发布时间】:2014-06-22 21:04:45
【问题描述】:

我正在尝试自动填充 WebView 中的字段。网页的页面来源在这里:http://pastebin.com/WKbj7XJh

我在我的WebView 中启用了 javascript,我在我的WebViewClient 中有以下代码

public void onPageFinished(final WebView view, String url) {
        super.onPageFinished(view, url);
        String website = "https://www.example.com/oauth_callback";
        view.loadUrl("javascript:document.getElementById(\"application_callback_url\").value = '"+website+"';");
    }

我没有自动填充该字段,而是得到一个空白的 WebView,它只显示:“https://www.example.com/oauth_callback

我以这个问题为指导:Fill fields in webview automatically

非常感谢所有帮助。

【问题讨论】:

  • 您能否分享有关您正在运行的平台版本和您正在构建的 SDK 的更多详细信息?
  • 我正在使用 Android 4.4.2 (API 19) 构建并在 Android 4.4.3 设备上运行它。
  • 您可以尝试改用 WebView.evaluateJavaScript API 吗?
  • @ksasq 非常感谢您的帮助。这非常有效。也许在 API 19 之前的设备上,我的问题中的代码会起作用,因为该评估 JavaScript API 仅在 API 19 中可用。我将在有时间时对此进行测试。
  • 感谢您的更新 - 很高兴它对您有用。是的,这是 Android 4.4 中引入的 chromium webview 的变化。当您的应用在旧设备上运行时,您应该能够使用 loadUrl 方法。我将正式化为一个答案:)

标签: android webview autofill


【解决方案1】:

当您开始以 API 19 及更高版本为目标时,这是 WebView.loadUrl 在传递返回值的 javascript: URL 时的行为。

您应该更新您的应用,以便在 API 19 或更高版本上运行时使用 evaluateJavaScript,并在旧设备上运行时回退到 loadUrl。比如:

if (android.os.Build.Version.SDK_INT >= 19) {
    webview.evaluateJavaScript("...", null);
} else {
    webview.loadUrl("javascript:...");
}

或者,您可以将 javascript 转换为不返回值的 JS 函数,并在所有平台版本上将其与 loadUrl 一起使用。

【讨论】:

    猜你喜欢
    • 2021-09-15
    • 1970-01-01
    • 2013-10-03
    • 1970-01-01
    • 2013-04-24
    • 2020-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多