Preventing viewport resize of web page when android soft keyboard is active

↘锁芯ラ 提交于 2019-11-28 21:16:10

Ok, well after some fiddling around I've found out a solution to my problem.

So what happens when the soft keyboard is shown/hidden?! In my test, the viewport width remains constant. However, the viewport height changes size [((current - previous)/previous)*100] when the soft keyboard is shown by 43% (in portrait) and by 58%(in landscape); and when the soft keyboard is hidden by 73%(in portrait) and 139%(in landscape) respectively.

So what I did was disable the callback function when the following conditions are all true:

  1. The device is mobile
  2. The percentage change in viewport width is less than 1%
  3. The percentage change in viewport height is greater than 35%

Since mobile device browsers do not have resize handles like on the desktop, I do not believe there will arise a situation where a user will mimic the above conditions in a natural way.

You can see a sample of the code here: https://github.com/obihill/restive.js/blob/f051fe6611e0d977e1c24c721e5ad5cb61b72c1c/src/restive.js#L4419. Unfortunately, it's part of a bigger codeset, but you should be able to glean the basic idea based on the conditionals.

Cheers.

I had a similar problem. And my solution was to use the orientation change event instead of the resize event which triggers when you least expect it on android :P

$(window).bind( 'orientationchange', function(e){ // Type pretty code here });

source: http://www.andreasnorman.com/dealing-androids-constant-browser-resizing/

I can share you with my pretty code. I was setting trigger on resize event and counting height relative to before resize event.

originalHeight * 100 / currentHeight give you precent wich you can change height container

You can see a sample of the code here https://jsfiddle.net/ocg9Lus7/

UPDATE 19.11.2018

I recomend you change value from dynamic (100%, vh etc.) to static value after onload window. If you need more dynamic container you can reculclate sizes by bynding function to resize event (originalHeight * 100 / currentHeight)

You can see a sample of the code here: https://jsfiddle.net/gbmo6uLp/

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!