Empêcher la refusion / redimensionnement du document lorsque le clavier Android ouvre

Ceci est pour un WebApp HTML5 / Javascript, pas une application Android native.

Comment puis-je empêcher le navigateur / le DOM de redimensionner mon contenu (qui est sensible, surtout vw / vh pour les tailles, etc.), lorsque le clavier mobile Android s'ouvre? Ce qui se passe, c'est que le contenu, en particulier la taille des polices, change une fois que le clavier est ouvert (par exemple, dans les champs de saisie).

J'ai déjà configuré

<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1"> 

Ce que je veux atteindre, c'est que le clavier joue le rôle de superposition et que le contenu en dessous devient mobile. Donc, fondamentalement, quel android:windowSoftInputMode ferait dans un manifeste Android.

J'ai également essayé d'écouter l'événement de redimensionnement de la fenêtre et de l'empêcher, lorsque le montant de redimensionnement est dans une certaine plage (voir cette réponse à une autre question). Mais ce qui se passe ici, c'est que le clavier s'ouvre et, immédiatement après, se referme. (*)

Donc, mes idées de base sont:

  • Empêcher le navigateur de calculer les nouvelles tailles (comme s'il n'y avait pas de redimensionnement)
  • Configurez le clavier pour agir comme une superposition, pas un élément individuel redimensionnant la fenêtre
  • Gardez le clavier ouvert dans ma méthode de redimensionnement prévenu déjà testé (*)

Mais je ne peux pas trouver une solution de travail pour ces derniers.

  • Phonegap (3.0.0) La caméra n'a pas réussi lors du premier essai
  • Cordova ibeacon; Envoyer une notification locale après que l'application a été tuée, mais ne fonctionne pas sur Android
  • Comment voir la sortie du journal de la console dans samsung galaxy S2
  • React-native: détecte dev ou production env
  • Uncaught ReferenceError: le support n'est pas défini
  • JavaScript ne fonctionne parfois pas dans la vue web d'Android
  • Type d'entrée = nombre impossible d'insérer des numéros négatifs sur le téléphone portable
  • Comment désactiver complètement le clavier programmable pour toutes les entrées dans la visionneuse Android
  • One Solution collect form web for “Empêcher la refusion / redimensionnement du document lorsque le clavier Android ouvre”

    Ok, c'est une solution corrective pour l'application html5 (navigateur).

     var isKeyboardOpen = false; //Override onresize event if you have it already just insert code // also you can check id of element or any other parameters if ( document.activeElement.tagName == "INPUT" || document.activeElement.tagName == "input" ) { // regular onresize } else{ // avoid resize } 

    // Pour vérifier est-ce que le clavier est ouvert, utilisez ce code

    Window.addEventListener ('native.showkeyboard', keyboardShowHandler);

     window.addEventListener('native.hidekeyboard', keyboardHideHandler); function keyboardShowHandler(e){ isKeyboardOpen = true; //always know status } function keyboardHideHandler(e){ isKeyboardOpen = false; } 

    Essayez initialement d'empêcher en réglant le drapeau:

     var object = document.getElementById("IwillOpenKeyboardOnMobile") object.addEventListener("focus", ONFOCUSELEMENT); function ONFOCUSELEMENT() { isKeyboardOpen = true; } // opposite event is blur 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.