Цикл For in не выполняет итерации по экранному объекту в IE. - PullRequest
0 голосов
/ 08 февраля 2012

Это работает во всех браузерах:

for (var i in navigator) {
    console.log(i, ':', navigator[i]);
}

Но это не работает в IE 6 или 7: (цикл ноль раз)

for (var i in screen) {
    console.log(i, ':', screen[i]);
}

Чем отличается объект screen?
И что еще более важно, как бы я прошел через это в IE?

Демо: http://jsfiddle.net/Atepq/

Ответы [ 2 ]

1 голос
/ 08 февраля 2012

Отличается то, что отличается ...

MDN указывает, что screen на самом деле не является частью какой-либо спецификации ...

https://developer.mozilla.org/en/DOM/window.screen#Specification

0 голосов
/ 08 февраля 2012

Когда я запускаю тесты, IE9 позволяет получить все свойства объекта экрана с помощью:

for (var prop in screen) {
    console.log(prop);
}

Но это не позволит вам получить доступ к некоторым свойствам, чтобы получить их значение. Когда вы делаете это, он останавливает выполнение JS. Это даже не исключение, которое вы можете поймать.

Да, это умственно отсталый, но это не противоречит тому, что делает IE, даже в IE9.

Если вам действительно нужно это сделать, вы можете по одному выяснить, с какими свойствами IE не работает, и написать код для их проверки и избежать их. Возможно, его придется обновлять от версии к версии, но это может заставить вас пойти на все, что вы пытаетесь сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...