Identify if the mobile phone keyboard is open

Asked

Viewed 200 times

2

I know it’s possible to identify when a person clicks on a particular element of the screen for the first time, but if that were to improve.

How could I identify if the mobile phone keyboard is open when someone click a text field through the mobile browser, for example?

There is a way to do this through javascript?

<script>
function seiQueAbriuOTeclado() {
  //aqui sabemos que ele abriu, mas por dedução, porque sabemos que ele clicou...
}
</script>
<form>
   <input onclick="seiQueAbriuOTeclado()">
</form>

I wonder if there is a way to access via webview some plugin that does this relationship with Cordova, as Ionic framework does.

Similar doubts

Here’s a basic example

  • From what I understand it is not possible to check if the keyboard is open without deduction. What you can do is a system for the event of Focus in elements that opens the keyboard and a system for the event of Blur in elements that the keyboard closes to thus have a control.

2 answers

1

You could check if the person is in a Mobile device:

    function verificacao() { var check = false; //wrapper no check
        (function(a){if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4)))check = true})(navigator.userAgent||navigator.vendor||window.opera)
        return check;
    }

And if the person is on a mobile device and Onfocus is triggered you will know that the keyboard appeared.

  • Let’s say my system already identifies that I’m on a mobile, instead of doing the onclick check I checked the focus in the field, onFocus="abriuTeclado()", how to know if the keyboard was closed even if losing focus in the field?

  • Even because it is possible to close the keyboard if the person presses the back button of the mobile phone.

0

As you asked:

I wonder if there is a way to access via webview some plugin that makes this relationship with Cordova

Yes, Ionic is Cordova, its core at least, for example the plugin used by Ionic is the https://github.com/ionic-team/cordova-plugin-ionic-keyboard, which is based on the https://github.com/cjpearson/cordova-plugin-keyboard, to install just use the command

cordova plugin add cordova-plugin-keyboard

You can check if this is visible with:

if (cordova.plugins.Keyboard.isVisible) {
    ...
}

Or use the event:

window.addEventListener('keyboardDidShow', function () {
    // dispara quando o teclado se torna visivel
});

Via pure Javascript has no resource for this, the event focus will not check if the keyboard is visible, will check if the field is focused, the keyboard being visible in the focused field is mere "convenience"

Browser other questions tagged

You are not signed in. Login or sign up in order to post.