Javascript 如何在没有cordova'的情况下隐藏软键盘;s插件,没有失去焦点

Javascript 如何在没有cordova'的情况下隐藏软键盘;s插件,没有失去焦点,javascript,android,jquery,cordova,dom-events,Javascript,Android,Jquery,Cordova,Dom Events,当我点击一个而没有插件,也没有失去输入的焦点时,我想隐藏Android本机键盘 使用JavaScript,我可以检测键盘何时显示或隐藏,但我希望在需要时隐藏 showkeyboard显示时隐藏键盘,因此,我认为当我检测到showkeyboard事件时,可以触发backbutton click事件,但它不起作用 document.addEventListener("showkeyboard", function(){ alert("Keyboard is ON");

当我点击一个
而没有插件,也没有失去
输入的焦点时,我想隐藏Android本机键盘

使用JavaScript,我可以检测键盘何时显示或隐藏,但我希望在需要时隐藏

showkeyboard
显示时隐藏键盘,因此,我认为当我检测到
showkeyboard
事件时,可以触发backbutton click事件,但它不起作用

document.addEventListener("showkeyboard", 
    function(){ 
        alert("Keyboard is ON"); 
        $("backbutton").trigger('click'); // Doesn't work effect
    }, false);

document.addEventListener("hidekeyboard", 
    function(){ 
        alert("Keyboard is OFF");

    }, false);

首先在mainactivity导入中:

    import android.view.inputmethod.InputMethodManager;
    import android.webkit.JavascriptInterface;
然后在onCreate方法中添加javascriptinterface:

   super.appView.addJavascriptInterface(new JSInterface(), "testInterface");
之后,在Mainactivity类中添加以下代码:

    @JavascriptInterface
    public void hideKeyboard() {
        runOnUiThread(new Runnable() {

            public void run() {
                try {
                    InputMethodManager inputMethodManager = (InputMethodManager) getApplicationContext().getSystemService(Service.INPUT_METHOD_SERVICE);
                    inputMethodManager.hideSoftInputFromWindow(<MainactivityClass>.this.getCurrentFocus().getWindowToken(), 0);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
@JavascriptInterface
公共无效隐藏板(){
runOnUiThread(新的Runnable(){
公开募捐{
试一试{
InputMethodManager InputMethodManager=(InputMethodManager)getApplicationContext();
inputMethodManager.hideSoftInputFromWindow(.this.getCurrentFocus().getWindowToken(),0);
}捕获(例外e){
e、 printStackTrace();
}
}
});
}
现在从HTML中,按如下方式调用输入框中的本机hideKeyboard()方法:

    <input type="text" onfocus="window.testInterface.hideKeyboard()" />

尝试直接使用

document.getElementById('input_field_to_focus').focus();
这会将焦点添加到输入字段,但不会调用软键盘。 键盘打开事件不会在Android上触发,除非它来自单击事件


请参阅以下链接:

readonly属性起作用,它仍应能够接收焦点,如下所述: