Неверное разрешение экрана в браузерах на мобильных телефонах [дубликат]

  1. API Microsoft Maps: http://www.microsoft.com/maps/developers/web.aspx
  2. API Yahoo Maps: http: //developer.yahoo.com/maps/
  3. Чтобы назвать несколько, если я полностью не понял ваш вопрос.

149
задан 11 February 2010 в 04:36
поделиться

11 ответов

исходный ответ

Да.

window.screen.availHeight
window.screen.availWidth

update 2017-11-10

Из Tsunamis в комментариях:

Чтобы получить собственное разрешение, т. Е. Мобильное устройство, вам нужно умножить его с соотношением пикселей устройства: window.screen.width * window.devicePixelRatio и window.screen.height * window.devicePixelRatio. Это также будет работать на рабочих столах, которые будут иметь отношение 1.

И из Ben в другом ответе:

В ванильном JavaScript это даст вам доступную ширину / высоту:

window.screen.availHeight
window.screen.availWidth

. Для абсолютной ширины / высоты используйте:

window.screen.height
window.screen.width
225
ответ дан John Weldon 25 August 2018 в 06:36
поделиться
  • 1
    Сейчас это не совсем правильно. Он не рассматривает возможность изменения масштаба страницы. – sergzach 25 March 2013 в 13:37
  • 2
    @sergzach - В этом случае я вместо этого использовал бы jQuery $(window).width(), см. ответ chaim.dev – BornToCode 12 February 2014 в 00:43
  • 3
    Используйте window.screen.height и window.screen.width, чтобы получить точный размер экрана (как предложено в следующем ответе). Причина, по которой вы не получаете точный размер, заключается в том, что она проверяет доступную ширину и высоту, это означает, что она вычитает высоту панели инструментов (которая составляет ровно 40 пикселей на окнах 7/8) – Jaruba 12 April 2015 в 06:02
  • 4
    Не было бы лучше, для разрешения экрана, чтобы пойти с window.screen.height и шириной? почему availHeight? Например, my availWidth возвращает 1050, когда на самом деле 1080. – Malavos 24 August 2015 в 20:16
  • 5
    @eckes вы должны умножаться с window.devicePixelRatio. См. Мой комментарий к Алессандросу. – Tsunamis 10 November 2017 в 09:30

Если вы хотите определить разрешение экрана, вы можете проверить плагин res . Это позволяет вам сделать следующее:

var res = require('res')
res.dppx() // 1
res.dpi() // 96
res.dpcm() // 37.79527559055118

Вот некоторые отличные выходы разрешения от Райана Ван Эттен, автора плагина:

  • 2 единицы набора существуют и различаются в фиксированном масштабе: единицы устройства и единицы CSS.
  • Разрешение рассчитывается как количество точек, которые могут поместиться вдоль определенной длины CSS.
  • Преобразование единиц : 1⁢in = 2,54⁢cm = 96⁢px = 72⁢pt
  • CSS имеет относительную и абсолютную длину. При нормальном масштабировании: 1⁢em = 16⁢px
  • dppx эквивалентно соотношению пикселей к устройству.
  • devicePixelRatio-определение отличается платформой.
  • Запросы к мультимедиа может мигать с минимальным разрешением. Использовать с осторожностью относительно скорости.

Вот исходный код для res, на сегодняшний день:

!function(root, name, make) {
  if (typeof module != 'undefined' && module.exports) module.exports = make()
  else root[name] = make()
}(this, 'res', function() {

  var one = {dpi: 96, dpcm: 96 / 2.54}

  function ie() {
    return Math.sqrt(screen.deviceXDPI * screen.deviceYDPI) / one.dpi
  }

  function dppx() {
    // devicePixelRatio: Webkit (Chrome/Android/Safari), Opera (Presto 2.8+), FF 18+
    return typeof window == 'undefined' ? 0 : +window.devicePixelRatio || ie() || 0
  }

  function dpcm() {
    return dppx() * one.dpcm
  }

  function dpi() {
    return dppx() * one.dpi
  }

  return {'dppx': dppx, 'dpi': dpi, 'dpcm': dpcm}
});
1
ответ дан Abram 25 August 2018 в 06:36
поделиться
function getScreenWidth()
{
   var de = document.body.parentNode;
   var db = document.body;
   if(window.opera)return db.clientWidth;
   if (document.compatMode=='CSS1Compat') return de.clientWidth;
   else return db.clientWidth;
}
3
ответ дан Anabar 25 August 2018 в 06:36
поделиться
var width = screen.width;
var height = screen.height;
46
ответ дан andrewsi 25 August 2018 в 06:36
поделиться
  • 1
    Это эквивалентно window.screen. Следует просто добавить его к существующему ответу. – Gajus 4 November 2014 в 21:58
  • 2
    На самом деле это правильный ответ. screen.availHeight просто дает доступную высоту в окне браузера, а screen.height дает точную высоту экрана. – apnerve 22 September 2015 в 18:22
  • 3
    Это возвращает разрешение с разрешением dpi, а не разрешение на экране. – Dominic Cerisano 1 June 2016 в 23:00
  • 4
    Чтобы получить собственное разрешение, то есть мобильное устройство, необходимо умножить его на соотношение пикселей устройства: window.screen.width * window.devicePixelRatio и window.screen.height * window.devicePixelRatio. Это также будет работать на рабочих столах, которые будут иметь отношение 1. – Tsunamis 10 November 2017 в 09:28
  • 5
    Настольные компьютеры не обязательно будут иметь отношение 1. – 12Me21 2 April 2018 в 15:56

только для справок в будущем:

function getscreenresolution()
{
    window.alert("Your screen resolution is: " + screen.height + 'x' + screen.width);
}
1
ответ дан daniel 25 August 2018 в 06:36
поделиться

Вы имеете в виду разрешение дисплея (например, 72 точки на дюйм) или размеры пикселей (в настоящее время окно браузера составляет 1000 x 800 пикселей)?

Разрешение экрана позволяет вам узнать, насколько толстой будет 10-пиксельная линия в дюймах. Размеры пикселей говорят вам, какой процент от доступной высоты экрана будет занимать горизонтальная линия шириной 10 пикселей.

Невозможно узнать разрешение дисплея только с Javascript, так как сам компьютер обычно не знает фактические размеры экрана, просто количество пикселей. 72 dpi - обычное предположение ....

Обратите внимание, что есть много путаницы в разрешении экрана, часто люди используют этот термин вместо разрешения пикселей, но эти два совершенно разные. См. Википедия

Конечно, вы также можете измерять разрешение в точках на см. Существует также неясная тема не квадратных точек. Но я отвлекся.

18
ответ дан Larry K 25 August 2018 в 06:36
поделиться

В ванильном JavaScript это даст вам AVAILABLE width / height:

window.screen.availHeight
window.screen.availWidth

. Для абсолютной ширины / высоты используйте:

window.screen.height
window.screen.width

Оба вышеуказанного могут быть записаны без префикса окна.

Как jQuery? Это работает во всех браузерах, но каждый браузер дает разные значения.

$(window).width()
$(window).height()
31
ответ дан montrealist 25 August 2018 в 06:36
поделиться

С помощью jQuery вы можете сделать:

$(window).width()
$(window).height()
20
ответ дан Niklas Berglund 25 August 2018 в 06:36
поделиться
  • 1
    Это самое простое крест / все решение, которое я использовал. Для ширины браузера ... – Zarne Dravitzki 7 June 2013 в 00:42
  • 2
    jQuery необходим для этого, не хотел бы загружать его только для этого ... – user 8 August 2013 в 20:26
  • 3
    Это возвращает размер окна, а не разрешение экрана. – Jonas 20 September 2013 в 10:34

Попытка получить это на мобильном устройстве требует еще нескольких шагов. screen.availWidth остается неизменным независимо от ориентации устройства.

Вот мое решение для мобильных устройств:

function getOrientation(){
    return Math.abs(window.orientation) - 90 == 0 ? "landscape" : "portrait";
};
function getMobileWidth(){
    return getOrientation() == "landscape" ? screen.availHeight : screen.availWidth;
};
function getMobileHeight(){
    return getOrientation() == "landscape" ? screen.availWidth : screen.availHeight;
};
11
ответ дан posit labs 25 August 2018 в 06:36
поделиться
  • 1
    window.orientation возвращает undefined ... (Firefox 49) screen.orientation.angle возвращает угол, но он уже равен 0 для ландшафтного режима. – Lambart 8 November 2016 в 02:51

Вы также можете получить ширину и высоту WINDOW, избегая панелей инструментов браузера и ... (не только размер экрана).

Для этого используйте свойства window.innerWidth и window.innerHeight. См. его в w3schools .

В большинстве случаев наилучшим способом является, например, отображение полностью централизованного плавающего модального диалога. Он позволяет вычислять позиции в окне, независимо от того, какая ориентация разрешения или размер окна используются браузером.

10
ответ дан serfer2 25 August 2018 в 06:36
поделиться
  • 1
    Это наиболее полезное решение. Свойство window.screen.availWidth дает SCREEN, а не область просмотра, которые могут быть разными. Мне более полезно знать, сколько недвижимости я могу использовать, а не то, что может быть / станет максимальным браузером. – Mike Mannakee 21 July 2017 в 16:20
Другие вопросы по тегам:

Похожие вопросы: