我有一个只有一个可见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个按钮的源代码
Focus Text1 - 将光标放在text1上并弹出软键盘.Java Focus Text1 - 调用Java来执行相同的JS.仅显示光标,不弹出键盘Java Focus Text1 And Keyboard Open - 从Java和Forces Keyboard调用JS打开.我的理解是JS执行应该是相同的,无论是使用按钮/事件从浏览器执行还是从Java发送WebView.loadURL().
这是我的查询
Button#2?这就是我当前代码的方式,我只看到光标已设置但SoftKeyboard无法打开.Button#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)