InnerWidth и ширина экрана показывают одинаковые значения?

Я изучаю встроенные объекты в JavaScript и написал следующее, чтобы увидеть их возвращаемые значения в Chrome.

console.info(window.innerWidth);
console.info(window.screen.width);

Насколько я понял из книги, которую я читаю, документации Mozilla по этим свойствам и вопроса, указанного в комментариях, innerWidth покажет значение ширины самого окна просмотра без какого-либо интерфейса браузера, а экран width должен отображать всю ширину экрана моего компьютера.

Однако независимо от того, как я изменяю размер окна Chrome, в консоли отображается одно и то же значение innerWidth. Ширина экрана изменяется в значении, когда я изменяю размер окна (поведение, которое я считал эксклюзивным для innerWidth) вместо того, чтобы оставаться тем, что, как я думал, будет более или менее «постоянным» значением разрешения моего ноутбука.

Мне кажется, это до боли очевидно! Есть причина для этого? Я неправильно понял значения свойств?

Возможный дубликат В чем разница между window.innerWidth и screen.width?

Adam Fratino 02.06.2018 19:31

На самом деле я проверил именно этот вопрос! Это подтвердило поведение, которое, как я думал, должно происходить, но не происходит.

Madeline Collins 02.06.2018 19:41

Я оставил ответ с фрагментом для тестирования в консоли. Как именно вы возвращаете эти значения при тестировании?

Adam Fratino 02.06.2018 19:42

Скрипт связан в файле HTML, и я открываю его локально в Chrome и проверяю там консоль. Связаны только эти две строки JS, а HTML является скудным. Начинаю задумываться, где возникает эта проблема.

Madeline Collins 02.06.2018 19:52
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
3
4
703
1

Ответы 1

Вставьте это в консоль Chrome, и вы увидите, что при изменении размера браузера они возвращают два разных значения: одно статическое (ширина экрана) и одно динамическое (ширина области просмотра браузера).

window.addEventListener('resize', () => {
    console.info(window.screen.width, window.innerWidth)
})

Я не уверен, почему вы получаете неправильные значения, но оба этих свойства правильно работают в Chrome.

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

Madeline Collins 02.06.2018 19:50

Что произойдет, если вы измените размер области отображения в этой скрипке? jsfiddle.net/gprdtoeg

Adam Fratino 02.06.2018 19:53

Все происходит именно так, как я думал! Изменяется только innerWidth, а ширина экрана держится на разрешении моего экрана 1440.

Madeline Collins 02.06.2018 19:55

Хорошая новость в том, что он работает так, как задумано, поэтому ваша книга и MDN не лгут вам. Похоже, что с вашей местной средой что-то не так, но я не уверен, с чего бы вам начать помогать в этом.

Adam Fratino 02.06.2018 19:59

Ага! Да, я тестировал в Safari, и он работает без проблем. Здесь показаны правильные значения для двух. Я вернулся в Chrome, чтобы проверить, не возвращает ли домашняя страница Google «неправильные» значения, и это так. Это не только мой файл в Chrome. Как странно.

Madeline Collins 02.06.2018 20:07

Я думаю, что нашел проблему. Я отобразил два значения в HTML вместо того, чтобы записывать их в консоль, и они вернули правильные значения. Но как только я открываю инспектор и обновляю страницу, значения снова неверны. Кажется, отображается сам инспектор Chrome, который вызывает эту проблему.

Madeline Collins 02.06.2018 20:20

Рад, что ты разобрался!

Adam Fratino 03.06.2018 09:12

Другие вопросы по теме