Показать сообщение отдельно
  #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 для каждого элемента накладно, и не всегда нужно.
Ответить с цитированием