2015-11-12 12 views
7

Bu, bir yerel Android uygulaması değil, bir HTML5/Javascript WebApp uygulaması içindir.Android klavye açıldığında belgeyi yeniden akıtmayı/tarayıcıyı yeniden boyutlandırmayı engelle

Android yazılım klavyesi açıldığında, tarayıcının/DOM'ın içeriğimi yeniden boyutlandırmasını nasıl engellerim (çoğunlukla duyarlılık, çoğunlukla vw/vh vb.)? Ne olur, içerik, özellikle yazı tipi boyutları, klavye açıldığında değişir (örneğin giriş alanlarında).

zaten bir bindirme ve içerik olarak klavye davranır altına kaydırılabilir hale gelmesi,

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

Ne elde etmek istiyorum olduğunu

belirledik ben. Yani temel olarak, bir android manifestinde android:windowSoftInputMode ne yapardı.

Ayrıca, yeniden boyutlandırma miktarı belirli bir aralıkta olduğunda, pencere yeniden boyutlandırma olayını dinlemeyi ve engellemeyi de denedim (bkz. this answer). Fakat burada ne olur, klavye açılır ve tekrar kapatıldıktan hemen sonra. (*)

Yani benim temel fikirler:

  • (hayır boyutlandırma olmamış gibi)
  • bir bindirme olarak hareket etmek klavyeyi belirlenen yeni boyutları hesaplanırken gelen tarayıcı engeller değil, bireysel bir unsur benim zaten test önlemek-boyutlandırmak yöntemiyle (*)

yılında

  • açık klavyeyi tutmak pencereyi yeniden boyutlandırma Ama bunlardan herhangi biri için çalışan bir çözüm anlamaya olamaz.

  • +0

    @NikolaLukic: "* Bu içindir: nedenle düzenli bir Webapp (ilk cümle olması gerekiyordu Oldukça emin HTML5/Javascript WebApp. * "). Ayrıca, ilgi için darbeleme. –

    cevap

    0

    Tamam, bu html5 (tarayıcı) uygulaması için düzeltildi.

    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 
    
        } 
    

    // kontrol etmek o klavye açık kullanımı bu kodu

    window.addEventListener ('native.showkeyboard', keyboardShowHandler) 'dir; Başlangıçta

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

    bayrağı ayarlayarak önlemek için deneyin:

    var object = document.getElementById("IwillOpenKeyboardOnMobile") 
    object.addEventListener("focus", ONFOCUSELEMENT); 
    
    function ONFOCUSELEMENT() { 
    isKeyboardOpen = true; 
    } 
    
    // opposite event is blur 
    
    İlgili konular