Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 12.03.2012, 16:11
Аспирант
Отправить личное сообщение для Viper Посмотреть профиль Найти все сообщения от Viper
 
Регистрация: 27.09.2008
Сообщений: 88

Странности undefined в IE7 и JSON
Набросал небольшой плагин который лепит языковые переменные к элементам в DOM.

;(function($, window, document, undefined){
	$.fn.procLang = function(options){
		options = $.extend({}, $.fn.procLang.defaultOptions, options);

		$.each(options.lang_object, function(k, obj){
			if (obj.type != 'undefined') {
				if (obj.type == 'value') {
					$(obj.selector).val(obj.text);
				} else if (obj.type == 'html') {
					$(obj.selector).html(obj.text);
				} else if (obj.type == 'attr') {
					$(obj.selector).prop(obj.text);
				} else if (obj.type == 'document') {
					$(document).prop('title', obj.text);
				} else {
					$(obj.selector).text(obj.text);
				}
			} else {
				$(obj.selector).text(obj.text);
			}
		});
		return this;
	};
	$.fn.procLang.defaultOptions = {
		lang_object: {} // Required
	}
})(jQuery, window, document);


Прост до безобразия. И есть массив json вида

var lang = {
	settingspage: {
		texts: [
			{selector: "document", type: "document", text: "Настройки"},
			{selector: ".settings_global", type: "text", text: "Настройки"},
			{selector: ".subscribers", type: "text", text: "Участники"},
			{selector: ".conferences", type: "text", text: "Конференции"},
			{selector: ".presets", type: "text", text: "Пресеты"},
			{selector: ".save", text: "Сохранить"},
			{selector: ".cancel", text: "Отмена"},
			{selector: ".separator_logging", text: "Настройки логирования событий"},
			{selector: ".separator_server", text: "Настройки сервера"},
			{selector: ".separator_conferences", text: "Список всех конференций"}
		]
	}
}


Проблема возникает в IE7 при проверке на undefined. IE говорит что нет такой проперти как type у obj. И сообщает что оно почему-то у него NULL.

Что это за косяк такой?
PS! Просто лепить type для каждого элемента накладно, и не всегда нужно.
Ответить с цитированием
  #2 (permalink)  
Старый 12.03.2012, 16:27
Профессор
Отправить личное сообщение для nikita.mmf Посмотреть профиль Найти все сообщения от nikita.mmf
 
Регистрация: 01.02.2010
Сообщений: 364

Надо заменить
if (obj.type != 'undefined')

на
if ( "type" in obj )
Ответить с цитированием
  #3 (permalink)  
Старый 12.03.2012, 16:55
Аспирант
Отправить личное сообщение для Viper Посмотреть профиль Найти все сообщения от Viper
 
Регистрация: 27.09.2008
Сообщений: 88

Не помогло. Все равно ругается.
Ответить с цитированием
  #4 (permalink)  
Старый 12.03.2012, 18:26
Профессор
Отправить личное сообщение для nikita.mmf Посмотреть профиль Найти все сообщения от nikita.mmf
 
Регистрация: 01.02.2010
Сообщений: 364

так что у Вас null obj или type?
Ответить с цитированием
  #5 (permalink)  
Старый 12.03.2012, 19:04
Аватар для vasa_c
Профессор
Отправить личное сообщение для vasa_c Посмотреть профиль Найти все сообщения от vasa_c
 
Регистрация: 12.03.2008
Сообщений: 183

ну, в obj.type не содержится строки "undefined"...
Ответить с цитированием
  #6 (permalink)  
Старый 14.03.2012, 10:28
Аспирант
Отправить личное сообщение для Viper Посмотреть профиль Найти все сообщения от Viper
 
Регистрация: 27.09.2008
Сообщений: 88

null type. Obj есть всегда. Вот только непонятно почему такая проверка не работает в IE7...
Ответить с цитированием
  #7 (permalink)  
Старый 14.03.2012, 13:53
Профессор
Отправить личное сообщение для nikita.mmf Посмотреть профиль Найти все сообщения от nikita.mmf
 
Регистрация: 01.02.2010
Сообщений: 364

на эту строку
if ( "type" in obj )

будет ругаться только если obj = null
Ответить с цитированием
Ответ


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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JSON или JSONP для запросов на другой сервер? Метод GET, для длинных сообщений? Kotakota jQuery 5 23.08.2011 23:12
Google Chrome: GET http://url/url undefined (undefined) Kirumbik Opera, Safari и др. 0 07.05.2011 23:26
передача JSON на сервер mikeles AJAX и COMET 0 04.03.2011 11:28
Чем отличается undefined от null hrundel Общие вопросы Javascript 21 01.01.2011 22:06
jQuery. Обработка ошибок и JSON. mma_mma jQuery 3 19.07.2010 12:10