Comment faire pour obtenir l'écran de la taille physique (c'est à dire en pouces)?
Je suis à essayer de comprendre comment obtenir les dimensions physiques de l'écran de l'appareil via Javascript. Jusqu'à présent, ma conclusion est qu'il est actuellement impossible, mais j'espère que quelqu'un peut me prouver le contraire :).
Pour l'instant j'ai essayé d'obtenir cette information par trouver le PPP du périphérique, mais il semble y avoir aucun moyen d'obtenir la valeur correcte ici, comme tous les appareils que j'ai testé (certains HDPI & XHDPI les appareils Android, un iPhone4S, un iPad 2 et un iPad 3) rapport de 96 PPP.
La première méthode d'obtention de la DPI j'ai essayé est celui que vous pouvez trouver partout sur internet: créer un div
avec un CSS largeur de 1in
, son clientWidth
ou offsetWidth
et il y a votre DPI. Ne fonctionne pas, tous les périphériques rapport 96.
La seconde méthode a l'aide de la la résolution des requêtes de média, quelque chose le long des lignes de:
for (var i=90; i < 400; i++) {
if (matchMedia('(resolution: ' + i + 'dpi)').matches) {
return i;
}
}
Je pensais que c'était une solution intelligente, mais, malheureusement, qui renvoie 96.
Est t-il quelque chose que je peux essayer?
Je n'ai pas de meilleure idée que de demander à l'utilisateur.
OriginalL'auteur Felix | 2012-06-29
Vous devez vous connecter pour publier un commentaire.
96 "DPI" est un standard du web qui a peu à voir avec la réalité. Les pouces c'mesures sont les mieux considérés comme des "logique" pouces, qui correspondent à des mesures de police et CSS mesures (ce qui peut inclure des points et des pouces). Un "point" dans la typographie est définie à 1 /72e de pouce, mais les écrans cessé d'être constamment à 72 DPI, il y a des siècles. Ainsi, toute une CSS point signifie vraiment, c'est maintenant que 96 point de la police est de 72 pixels de hauteur. (Et c'est logique pixels, depuis la question est maintenant de plus d'un amalgame par hi-DPI écrans.)
De toute façon, la plupart des systèmes d'exploitation natifs ne sais pas une chose à propos de leur véritable taille de l'écran, de sorte qu'ils n'ont même pas d'informations sur de tels qu'ils pourraient l'exposer à des applications web via un navigateur. Ce que vous demandez n'est pas possible.
Bien sûr, tous les Systèmes d'Exploitation modernes sont bien conscients de la taille physique de l'appareil de sortie. Même le vieux et saupoudré de Windows 3.1 à condition du moins les champs nécessaires dans ses structures de données pour représenter (et il a bien sûr utilisé avec par exemple une imprimante). Et depuis l'introduction de la DDC dans l'affichage des connexions, l'ordinateur affiche un rapport physique taille de l'écran, qui, ensemble, avec la densité de pixel se traduire par une résolution physique. Bien sûr, si le logiciel utilise réellement que l'information est une autre histoire. Mais néanmoins, l'information a été disponible dans tous les principaux systèmes d'exploitation pour un temps long.
Peut-être que l'info a été disponible pour systèmes d'exploitation de certains matériels. Mais quelques-uns, le cas échéant, les systèmes d'exploitation de la rendre disponible pour les applications, et moins encore, les applications ont jamais fait usage de. (Et pas de navigateur web, expose cette info à JavaScript.)
Le "100%" paramètre d'affichage dans les applications comme Word et Photoshop est basé sur une codé en dur pixels par pouce" de la valeur. Essayez par vous-même: faire quelque chose dans l'une de ces applications, l'imprimer, et de tenir la page imprimée jusqu'à votre écran d'affichage à 100%. La taille ne corresponde pas. (La plupart des applications assumer 72px/pouce, et la plupart des écrans ont été plus dense que pour un long moment.) Même si il ne, il ne sera pas une fois que vous changez la résolution de l'écran ou ouvrir l'application sur une autre machine/de l'affichage avec un écran différent de taille et de la même résolution.
OriginalL'auteur
Prendre un coup d'oeil à ce post.
C'est fait avec:
J'espérais que, avec cette balise ajoutée, l'appareil rapport de la bonne résolution en utilisant une des méthodes décrites dans ma question. Qui malheureusement n'arrive pas, bien que, mais merci pour l'astuce.
OriginalL'auteur