Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there any javascript event fired when the on-screen keyboard on mobile safari or chrome opens?

I try to react to the on-screen keyboard in our web applications. Unfortunately there are some things complicating this:

First of all, the application has to run equally on mobile platforms (tablets) and desktops. Additionally scrolling the document/body is forbidden and to spice things up even more, landscape mode is mandatory on tablets.

So, if someone selects any input field, the on-screen keyboard opens up and blocks the sight on half of the page, therefor some inputs become invisible and I need to change that.

Unfortunately it seems, there is no event fired at all, which indicates, that half of the application just became invisible. I already checked scroll and resize events, but they didn't fire, too.

Of course, I could always react somehow as soon as I'm sure to be on a tablet. Probably 95% of the users will not attach a hardware keyboard anyway. But isn't there any cleaner way?

like image 228
koehr Avatar asked Nov 25 '14 17:11

koehr


People also ask

Can I use virtual keyboard API?

The API is supported for browsers on touch platforms that have virtual keyboards: Windows, Chrome OS and Android.


2 Answers

Unfortunately the answer here is a clear: NO. There are some related questions here with some further information and tricks:

screen styling when virtual keyboard is active

iPad Web App: Detect Virtual Keyboard Using JavaScript in Safari?

Android/iPhone webkit, event triggered on keyboard pop?

like image 72
koehr Avatar answered Oct 06 '22 03:10

koehr


On Android (sorry iOS), the resize event will fire when the keyboard resizes your page. Add an onresize event handler on your window and adjust the scrolling as needed.

like image 37
Zectbumo Avatar answered Oct 06 '22 02:10

Zectbumo