如何确定一个HTML元素何时在Android WebView中获得焦点

How to determine when an HTML element gains focus in Android WebView?

本文关键字:WebView Android 焦点 何时 元素 何确定 HTML 一个      更新时间:2023-09-26

我试图确定当一个html页面中的文本字段从Android WebView集中。一些注意事项:我不是网页的所有者,所以我不能直接在网页上添加任何内容。

我已经试过了:

    webSettings.setJavaScriptEnabled(true);
    webSettings.setDomStorageEnabled(true);
    webView.addJavascriptInterface(new Object() {
        @JavascriptInterface
        public void displayScanButton() {
            WebViewActivity.this.runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    Log.d("SCAN", "DISPLAY SCAN BUTTON");
                    toolbar.setVisibility(View.VISIBLE);
                }
            });
        }
        @JavascriptInterface
        public void hideScanButton() {
            WebViewActivity.this.runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    Log.d("SCAN", "HIDE SCAN BUTTON");
                    toolbar.setVisibility(View.GONE);
                }
            });
        }
    }, "Android");
@Override
public void onPageFinished(WebView view, String url) {
    view.loadUrl("javascript:document.getElementById('tNewLabels').onfocus = Android.displayScanButton; document.getElementById('tNewLabels').onfocusout = Android.hideScanButton;");
}

我也有一些变化,但这是我目前的。它没有为输入字段设置onfocus。

基本上我想要的是当用户单击输入字段键入文本时,我显示我附加到键盘上的工具栏,仅用于此特定元素。当用户不再关注输入字段时,隐藏工具栏。我认为会有一种方法,因为WebView知道什么时候打开键盘,什么时候关闭键盘。可能有办法拦截吗?

谢谢你的帮助

试试这个:

document.getElementById('tNewLabels').onfocus = function() { Android.displayScanButton(); };
document.getElementById('tNewLabels').onfocusout = function() { Android.hideScanButton(); };

要使Android-Java桥工作,你的函数必须将接口对象作为"this"变量。将函数直接分配给事件,将其从接口对象的附件中剥离出来。我听说它曾经在旧版本的WebView中工作,但它不再工作了。

很抱歉我又提了一个老问题,你可能已经知道了。