Android InAppBrowser虚拟键盘在executeScript()上关闭。[电话差距]

Android InAppBrowser虚拟键盘在executeScript()上关闭。[电话差距],android,cordova,Android,Cordova,我从下面的链接复制了我的代码。这是一种将数据从iApp浏览器传递回应用程序的变通方法 blogs.telerik.com/appbuilder/posts/13-12-23/使用cordova的iApp浏览器进行跨窗口通信 问题是,每次executescript()之后,键盘都会消失 此问题状态为“无法修复”。所以我想知道是否有其他的解决办法。我只看到对KitKat用户的引用,但这只代表了有限的数量 建议 setName: function() { var win =

我从下面的链接复制了我的代码。这是一种将数据从iApp浏览器传递回应用程序的变通方法

blogs.telerik.com/appbuilder/posts/13-12-23/使用cordova的iApp浏览器进行跨窗口通信

问题是,每次executescript()之后,键盘都会消失

此问题状态为“无法修复”。所以我想知道是否有其他的解决办法。我只看到对KitKat用户的引用,但这只代表了有限的数量

建议

    setName: function() {
        var win = window.open( "http://jsfiddle.net/tj_vantoll/K2yqc/show", "_blank",
          "EnableViewPortScale=yes" );

        win.addEventListener( "loadstop", function() {
            win.executeScript({ code: "localStorage.setItem( 'name', '' );" });
            var loop = setInterval(function() {
                win.executeScript(
                    {
                        code: "localStorage.getItem( 'name' )"
                    },
                    function( values ) {
                        var name = values[ 0 ];
                        if ( name ) {
                            clearInterval( loop );
                            win.close();
                            $( "h1" ).html( "Welcome " + name + "!" );
                        }
                    }
                );
            });
        });
    }

根据您的使用情况,检查键盘当前是否可见并避免在这种情况下调用
executeScript
可能是一种可行的解决方法


尝试使用该插件获取
cordova.plugins.Keyboard.isVisible
,并在
setInterval
函数中使用该插件。

core cordova还提供了
showkeyboard
/
hidekeyboard
事件,但它们似乎不太可靠。例如,它们是在旋转设备时触发的,这会导致在我的测试中出现误报。谢谢Gregor。我会调查你的解决方案。