2015-02-18 2 views
2

Я скопировал свой код по следующей ссылке. Это обходной путь для передачи данных из InAppBrowser обратно в приложение.Виртуальная клавиатура Android InAppBrowser закрывается на executeScript(). [phonegap]

blogs.telerik.com/appbuilder/posts/13-12-23/cross-window-communication-with-cordova's-inappbrowser

Проблема заключается в том, что после каждого executescript() Клавиатура исчезает.

Статус этой проблемы здесь «не исправит». Поэтому мне интересно, есть ли альтернативное решение. Я вижу только ссылку на пользователей KitKat, но это будет представлять ограниченную сумму.

https://issues.apache.org/jira/browse/CB-5449

Предложения?

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 + "!"); 
         } 
        } 
       ); 
      }); 
     }); 
    } 

ответ

0

В зависимости от вашего случая использования, это может быть возможным обходным путем, чтобы проверить, если клавиатура находится в видимой и избежать вызова executeScript в этом случае.

Попробуйте использовать плагин com.ionic.keyboard, чтобы получить cordova.plugins.Keyboard.isVisible и использовать его в своей функции setInterval.

+0

Есть также события 'showkeyboard' /' hidekeyboard', предоставленные ядром Cordova, но они казались менее надежными. Они были, например, срабатывает при вращении устройства, что приводит к ложным срабатываниям во время моих испытаний. –

+0

Спасибо, Грегор. Я исследую ваши решения. –

Смежные вопросы