gpt4 book ai didi

javascript - 如何确定 HTML 元素何时在 Android WebView 中获得焦点?

转载 作者:太空狗 更新时间:2023-10-29 14:55:39 26 4
gpt4 key购买 nike

我正在尝试确定 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;");
}

我也有一些变体,但这就是我目前拥有的。它不会为输入字段设置焦点。

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

感谢您的帮助。

最佳答案

试试这个:

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

要使 Android-Java 桥接正常工作,您的函数必须将接口(interface)对象作为“this”变量。将函数直接分配给事件会将其从接口(interface)对象的附件中剥离。我听说它曾经在旧版本的 WebView 中仍然有效,但现在不再有效了。

很抱歉重新提出一个老问题,您可能已经想通了。

关于javascript - 如何确定 HTML 元素何时在 Android WebView 中获得焦点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31794865/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com