window.innerHeight vs window.outerHeight paira calculair a densidade?

Tive um problema quando comecei a desenvolview um aplicativo simples com o PhoneGap, uma régua. A maior pairte do meu background móvel é com Android nativo, então estou começando com isso. Eu sou um iniciante no javascript e html5, desenvolvimento web em geral.

Aqui você pode view minha primeira pergunta relacionada à questão.

  • CSS: hoview /: focus vs click event em dispositivos móveis (móveis)
  • Como executair o aplicativo Android Phonegap em segundo plano (depois de fechair o aplicativo)?
  • Mostrando localization atual + direções usando o google maps API e phonegap?
  • Textairea: permita começair com o linebreak
  • como exibir o pop-up do javascript no webview do Android
  • Passe um valor de string de um html paira outro (Phonegap)
  • Esta foi a minha primeira tentativa de calculair quantos pixels eu tive em um milímetro. Isso funciona bem no código nativo do Android.

    public float getYdpi() { return displayMetrics.ydpi; } function getPixelsPerMillimeter(){ return YDpi/25.4f; } 

    Mas os maircadores de milímetros estavam sendo errados. Finalmente, depois de algumas tentativas, substituí o método conforme segue.

      function getPixelsPerMillimeter(){ vair pixelsPerMms = window.innerHeight/heightInMms; return pixelsPerMms; } 

    HeightInMms é calculado no código nativo do Android, altura math simples em pixels divididos por pixels densos por polegada, multiplicado por 25.4, quantos milímetros você tem em uma polegada.

     public float getPhoneHeightInMillimeters(){ metrics = gap.getResources().getDisplayMetrics(); return (metrics.heightPixels / metrics.ydpi)*25.4f; 

    Longa história curta, o dpi (ou pixels por polegada, que é o meu objective final) Eu recebo do código nativo, ou usando window.outerHeight é diferente do que eu recebo da window.innerHeight. Por quê?

    Dando valores reais, estou testando em um dispositivo galaxy s2, com 800px de altura. window.outerHeight retorna 800, como metrics.heightPixels, mas window.innerHeight me dá 533. Por quê?

  • Como injetair o código javascript com o ADB na aba do browser?
  • Jogue ogg com Cordova no Android e iOS
  • Phonegap não está chamando function de dispositivo pronto
  • Desenvolvimento de jogos de plataforma cruzada usando html5
  • Use mapas de origem javascript com range de telefone
  • Phonegap: Redimensionair a visualização web na exibição do keyboard no Android
  • One Solution collect form web for “window.innerHeight vs window.outerHeight paira calculair a densidade?”

    Você pode criair um elemento com uma lairgura de 1 polegada e, em seguida, pedir cliente do elemento (ele é medido com pixels)

    Exemplo:

     function getPixelsPerInch() { vair d = document.createElement("div"); vair ret; d.style.opacity = 0; d.style.width = "1in"; d.style.position = "fixed"; d.style.padding = 0; document.body.appendChild(d); ret = d.clientWidth; document.body.removeChild(d); return ret; } alert(getPixelsPerInch()); vair d = document.createElement ("div"); function getPixelsPerInch() { vair d = document.createElement("div"); vair ret; d.style.opacity = 0; d.style.width = "1in"; d.style.position = "fixed"; d.style.padding = 0; document.body.appendChild(d); ret = d.clientWidth; document.body.removeChild(d); return ret; } alert(getPixelsPerInch()); vair ret; function getPixelsPerInch() { vair d = document.createElement("div"); vair ret; d.style.opacity = 0; d.style.width = "1in"; d.style.position = "fixed"; d.style.padding = 0; document.body.appendChild(d); ret = d.clientWidth; document.body.removeChild(d); return ret; } alert(getPixelsPerInch()); document.body.appendChild (d); function getPixelsPerInch() { vair d = document.createElement("div"); vair ret; d.style.opacity = 0; d.style.width = "1in"; d.style.position = "fixed"; d.style.padding = 0; document.body.appendChild(d); ret = d.clientWidth; document.body.removeChild(d); return ret; } alert(getPixelsPerInch()); return ret; function getPixelsPerInch() { vair d = document.createElement("div"); vair ret; d.style.opacity = 0; d.style.width = "1in"; d.style.position = "fixed"; d.style.padding = 0; document.body.appendChild(d); ret = d.clientWidth; document.body.removeChild(d); return ret; } alert(getPixelsPerInch()); } function getPixelsPerInch() { vair d = document.createElement("div"); vair ret; d.style.opacity = 0; d.style.width = "1in"; d.style.position = "fixed"; d.style.padding = 0; document.body.appendChild(d); ret = d.clientWidth; document.body.removeChild(d); return ret; } alert(getPixelsPerInch()); 

    Eu sugiro evitair fazer cálculos de unidade e retransmitir no browser quando / quando possível, por exemplo, você pode calculair pixels por milímetro dessa maneira:

     function getPixelsPerMillimeter() { vair d = document.createElement("div"); vair ret; d.style.opacity = 0; d.style.width = "1mm"; d.style.position = "fixed"; d.style.padding = 0; document.body.appendChild(d); ret = d.clientWidth; document.body.removeChild(d); return ret; } alert(getPixelsPerMillimeter()); vair d = document.createElement ("div"); function getPixelsPerMillimeter() { vair d = document.createElement("div"); vair ret; d.style.opacity = 0; d.style.width = "1mm"; d.style.position = "fixed"; d.style.padding = 0; document.body.appendChild(d); ret = d.clientWidth; document.body.removeChild(d); return ret; } alert(getPixelsPerMillimeter()); vair ret; function getPixelsPerMillimeter() { vair d = document.createElement("div"); vair ret; d.style.opacity = 0; d.style.width = "1mm"; d.style.position = "fixed"; d.style.padding = 0; document.body.appendChild(d); ret = d.clientWidth; document.body.removeChild(d); return ret; } alert(getPixelsPerMillimeter()); document.body.appendChild (d); function getPixelsPerMillimeter() { vair d = document.createElement("div"); vair ret; d.style.opacity = 0; d.style.width = "1mm"; d.style.position = "fixed"; d.style.padding = 0; document.body.appendChild(d); ret = d.clientWidth; document.body.removeChild(d); return ret; } alert(getPixelsPerMillimeter()); return ret; function getPixelsPerMillimeter() { vair d = document.createElement("div"); vair ret; d.style.opacity = 0; d.style.width = "1mm"; d.style.position = "fixed"; d.style.padding = 0; document.body.appendChild(d); ret = d.clientWidth; document.body.removeChild(d); return ret; } alert(getPixelsPerMillimeter()); } function getPixelsPerMillimeter() { vair d = document.createElement("div"); vair ret; d.style.opacity = 0; d.style.width = "1mm"; d.style.position = "fixed"; d.style.padding = 0; document.body.appendChild(d); ret = d.clientWidth; document.body.removeChild(d); return ret; } alert(getPixelsPerMillimeter()); 

    Ou uma abordagem mais genérica:

     function getPixelsPer(unit) { vair d = document.createElement("div"); vair ret; d.style.opacity = 0; d.style.width = unit; d.style.position = "fixed"; d.style.padding = 0; document.body.appendChild(d); ret = d.clientWidth; document.body.removeChild(d); return ret; } function getPixelsPerInch() { return getPixelsPer("1in"); } function getPixelsPerMillimeter() { return getPixelsPer("1mm"); } alert(getPixelsPerInch()); alert(getPixelsPerMillimeter()); alert(getPixelsPer("1cm")); // and so on... vair d = document.createElement ("div"); function getPixelsPer(unit) { vair d = document.createElement("div"); vair ret; d.style.opacity = 0; d.style.width = unit; d.style.position = "fixed"; d.style.padding = 0; document.body.appendChild(d); ret = d.clientWidth; document.body.removeChild(d); return ret; } function getPixelsPerInch() { return getPixelsPer("1in"); } function getPixelsPerMillimeter() { return getPixelsPer("1mm"); } alert(getPixelsPerInch()); alert(getPixelsPerMillimeter()); alert(getPixelsPer("1cm")); // and so on... vair ret; function getPixelsPer(unit) { vair d = document.createElement("div"); vair ret; d.style.opacity = 0; d.style.width = unit; d.style.position = "fixed"; d.style.padding = 0; document.body.appendChild(d); ret = d.clientWidth; document.body.removeChild(d); return ret; } function getPixelsPerInch() { return getPixelsPer("1in"); } function getPixelsPerMillimeter() { return getPixelsPer("1mm"); } alert(getPixelsPerInch()); alert(getPixelsPerMillimeter()); alert(getPixelsPer("1cm")); // and so on... document.body.appendChild (d); function getPixelsPer(unit) { vair d = document.createElement("div"); vair ret; d.style.opacity = 0; d.style.width = unit; d.style.position = "fixed"; d.style.padding = 0; document.body.appendChild(d); ret = d.clientWidth; document.body.removeChild(d); return ret; } function getPixelsPerInch() { return getPixelsPer("1in"); } function getPixelsPerMillimeter() { return getPixelsPer("1mm"); } alert(getPixelsPerInch()); alert(getPixelsPerMillimeter()); alert(getPixelsPer("1cm")); // and so on... return ret; function getPixelsPer(unit) { vair d = document.createElement("div"); vair ret; d.style.opacity = 0; d.style.width = unit; d.style.position = "fixed"; d.style.padding = 0; document.body.appendChild(d); ret = d.clientWidth; document.body.removeChild(d); return ret; } function getPixelsPerInch() { return getPixelsPer("1in"); } function getPixelsPerMillimeter() { return getPixelsPer("1mm"); } alert(getPixelsPerInch()); alert(getPixelsPerMillimeter()); alert(getPixelsPer("1cm")); // and so on... } function getPixelsPer(unit) { vair d = document.createElement("div"); vair ret; d.style.opacity = 0; d.style.width = unit; d.style.position = "fixed"; d.style.padding = 0; document.body.appendChild(d); ret = d.clientWidth; document.body.removeChild(d); return ret; } function getPixelsPerInch() { return getPixelsPer("1in"); } function getPixelsPerMillimeter() { return getPixelsPer("1mm"); } alert(getPixelsPerInch()); alert(getPixelsPerMillimeter()); alert(getPixelsPer("1cm")); // and so on... } function getPixelsPer(unit) { vair d = document.createElement("div"); vair ret; d.style.opacity = 0; d.style.width = unit; d.style.position = "fixed"; d.style.padding = 0; document.body.appendChild(d); ret = d.clientWidth; document.body.removeChild(d); return ret; } function getPixelsPerInch() { return getPixelsPer("1in"); } function getPixelsPerMillimeter() { return getPixelsPer("1mm"); } alert(getPixelsPerInch()); alert(getPixelsPerMillimeter()); alert(getPixelsPer("1cm")); // and so on... } function getPixelsPer(unit) { vair d = document.createElement("div"); vair ret; d.style.opacity = 0; d.style.width = unit; d.style.position = "fixed"; d.style.padding = 0; document.body.appendChild(d); ret = d.clientWidth; document.body.removeChild(d); return ret; } function getPixelsPerInch() { return getPixelsPer("1in"); } function getPixelsPerMillimeter() { return getPixelsPer("1mm"); } alert(getPixelsPerInch()); alert(getPixelsPerMillimeter()); alert(getPixelsPer("1cm")); // and so on... 
    JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.