小编Swa*_*oop的帖子

Android WebView - 使用Javascript设置HTML字段焦点

我有一个只有一个可见WebView组件的应用程序,用于显示一些动态生成的HTML(也可以运行Javascript).它启用了WebView.

对于几个页面,我试图在页面加载完成后设置其中一个输入文本框的焦点 - 不是通过 Body onLoad(),而是在页面完成加载之后通过JS调用onPageFinished().大多数javascript执行正常

    webview.loadURL("javascript:JSMethod();");
Run Code Online (Sandbox Code Playgroud)

但是当我使用相同的调用来做一个document.getElementById('text1').focus()- 光标确实到达元素但Soft Keyboard不会弹出.从页面上的按钮执行时,相同的javascript代码确实具有所需的效果.

我附加了有3个按钮的源代码

  1. Focus Text1 - 将光标放在text1上并弹出软键盘.
  2. Java Focus Text1 - 调用Java来执行相同的JS.仅显示光标,不弹出键盘
  3. Java Focus Text1 And Keyboard Open - 从Java和Forces Keyboard调用JS打开.

我的理解是JS执行应该是相同的,无论是使用按钮/事件从浏览器执行还是从Java发送WebView.loadURL().

这是我的查询

  1. 我在使用时遗漏了什么Button#2?这就是我当前代码的方式,我只看到光标已设置但SoftKeyboard无法打开.
  2. 当我使用写入的逻辑时Button#3,我有时看不到光标在字段上,但给了我想要的效果,当我在弹出的键盘中输入内容时,光标变得可见.
  3. 我看到的行为可能是Button#2Android JS执行中的错误吗?或者可能是WebView没有焦点,这就是为什么只显示光标?我也尝试过webview.requestFocus()- 我不能写,requestFocusOnTouch()因为它是我唯一拥有的视图,我希望它能自动聚焦.

演示行为的Java代码是

    import android.app.Activity;
    import android.content.Context;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.inputmethod.InputMethodManager;
    import android.webkit.JsResult;
    import android.webkit.WebChromeClient;
    import …
Run Code Online (Sandbox Code Playgroud)

javascript android setfocus android-webview dom-events

15
推荐指数
1
解决办法
2万
查看次数