Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.06.2011, 15:29
Новичок на форуме
Отправить личное сообщение для feedborg Посмотреть профиль Найти все сообщения от feedborg
 
Регистрация: 24.06.2011
Сообщений: 3

Не работает перечисление полей в Firefox
Я только начинаю изучать JS, сейчас читаю раздел про объекты. Может ли кто-то подсказать, почему этот код работает везде, кроме FF (тестировал на 5 и 6).
<script type="text/javascript">
	for (var propertyName in window) {
		var propertyType;
		propertyType = typeof(window[propertyName]);
		switch (propertyType) {
			case "string":
				console.log("String " + propertyType);
				break;
			case "number":
				console.log("Number " + propertyType);
				break;
			default:
				console.log("Default " + propertyType);
		}
	}
</script>

В консоль вываливается ошибка:
[15:19:28.480] uncaught exception: [Exception... "Operation is not supported" code: "9" nsresult: "0x80530009 (NS_ERROR_DOM_NOT_SUPPORTED_ERR)" location: "file:///D:/JavaScript/index.html Line: 6"]
Ответить с цитированием
  #2 (permalink)  
Старый 24.06.2011, 16:04
Новичок на форуме
Отправить личное сообщение для feedborg Посмотреть профиль Найти все сообщения от feedborg
 
Регистрация: 24.06.2011
Сообщений: 3

В конференции мозилы подсказали, рабочий код будет такой:
<script type="text/javascript">
	for (var propertyName in window) {
		if (propertyName != 'sessionStorage'){
			var propertyType;
			propertyType = typeof(window[propertyName]);
			switch (propertyType) {
				case "string":
					console.log("String " + propertyType);
					break;
				case "number":
					console.log("Number " + propertyType);
					break;
				default:
					console.log("Default " + propertyType);
			}
		}
	}
</script>
Ответить с цитированием
  #3 (permalink)  
Старый 24.06.2011, 16:22
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

Рабочий код будет такой:
for (var propertyName in window) {
console.log(propertyName);
		if (propertyName != 'sessionStorage' && propertyName != 'mozIndexedDB'){
			var propertyType;
			propertyType = typeof(window[propertyName]);
			switch (propertyType) {
				case "string":
					console.log("String " + propertyType);
					break;
				case "number":
					console.log("Number " + propertyType);
					break;
				default:
					console.log("Default " + propertyType);
			}
		}
	}


Дебаг строка: console.log(propertyName);
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Ответить с цитированием
  #4 (permalink)  
Старый 24.06.2011, 17:37
Интересующийся
Отправить личное сообщение для Shock Посмотреть профиль Найти все сообщения от Shock
 
Регистрация: 16.01.2009
Сообщений: 20

На самом деле подсказка не совсем корректная. Что будет, если появится ещё одно свойство, которое выбрасывает exception? Корректное решение будет такого типа:
for (var propertyName in window) {
	try {
		var propertyType = typeof window[propertyName];
	} catch (e) {
		console.log("Unknown " + propertyName);
		continue;
	}
	switch (propertyType) {
		case "string":
			console.log("String " + propertyType);
			break;
		case "number":
			console.log("Number " + propertyType);
			break;
		default:
			console.log("Default " + propertyType);
	}
}
Ответить с цитированием
  #5 (permalink)  
Старый 25.06.2011, 09:25
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

Shock,
На самом деле у вас кривой скрипт, здесь вообще не нужен switch, Unknown и Default. Вас не учили в школе что нужно быть благодарным за помощь?
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Ответить с цитированием
  #6 (permalink)  
Старый 25.06.2011, 19:42
Новичок на форуме
Отправить личное сообщение для feedborg Посмотреть профиль Найти все сообщения от feedborg
 
Регистрация: 24.06.2011
Сообщений: 3

Сообщение от Gozar Посмотреть сообщение
Shock,
На самом деле у вас кривой скрипт, здесь вообще не нужен switch, Unknown и Default. Вас не учили в школе что нужно быть благодарным за помощь?
Вопрос задал я, за помощь благодарен. Насчет "кривизны скрипта" я в посте указал, что только изучаю JS. Я не понимаю, к чему вы придираетесь?
Ответить с цитированием
  #7 (permalink)  
Старый 25.06.2011, 22:20
Аватар для Gozar
Отправить личное сообщение для Gozar Посмотреть профиль Найти все сообщения от Gozar
 
Регистрация: 07.06.2007
Сообщений: 7,504

feedborg,
Извините, спутал вас с Shock, непонравилось замечание по поводу корректности.
__________________
Последний раз редактировалось Gozar, Сегодня в 24:14.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Раскрывающийся список не работает в FireFox Andy-LC Элементы интерфейса 12 08.02.2011 10:47
помогите найти ошибку (работает в IE но не работает в Firefox) Len4ik Javascript под браузер 2 11.05.2010 15:41
Динамическая HTML форма (FireFox - работает, IE - не работает) dm1tr1y Общие вопросы Javascript 10 11.12.2009 15:59
В Firefox 3.5.5 не работает метод POST. Какие методы лечения? javascript_pupil AJAX и COMET 1 10.12.2009 20:34
В Firefox работает, в Опера ну никак и всё тут! SunLight_DH Opera, Safari и др. 4 16.11.2009 12:58