Показать сообщение отдельно
  #18 (permalink)  
Старый 30.01.2012, 04:46
Профессор
Посмотреть профиль Найти все сообщения от Livaanderiamarum
 
Регистрация: 25.12.2011
Сообщений: 786

(function() {
	// задаем имена
	var names = {
		alert : 'alert',
		console : "log",
		JSON : "JSON",
		localStorage : "storage",
		cookies : 'cookies'
	};

	// alert
	(function(name) {
		var al = alert;
		window[name] = function(arg, arg2) {
			for ( var i = 0; i < arguments.length; i++) {
				al(arguments[i])
			}
		}
	})(names['alert']);

	// console.log
	(function(name) {
		window[name] = function(arg) {
			console.log(arg)
		}
	})(names['console']);

	// JSON
	(function(name) {
		var func = function(arg) {
			return JSON[typeof arg == 'string' ? 'parse' : 'stringify'](arg)
		}
		func.parse = JSON.parse
		func.stringify = JSON.stringify
		window[name] = func
	})(names['JSON']);

	// localStorage
	(function(name) {
		window[name] = function(arg, arg2) {
			if (arguments.length == 1) {
				return (arg === null) ? localStorage.clear() : JSON
						.parse(localStorage.getItem(arg))
			} else {
				return (arg2 === null)
						? localStorage.removeItem(arg)
						: localStorage.setItem(arg, JSON.stringify(arg2))
			}
		}
	})(names['localStorage']);

	// cookies
	(function(name) {
		function set(name, value, expires, path, domain, secure) {
			document.cookie = name + "=" + escape(JSON.stringify(value))
					+ (expires ? "; expires=" + expires.toGMTString() : '')
					+ (path ? "; path=" + escape(path) : '')
					+ (domain ? "; domain=" + escape(domain) : '')
					+ (secure ? "; secure" : '')
		}
		function del(name) {
			var cookieDate = new Date();
			cookieDate.setTime(cookieDate.getTime() - 1000);
			document.cookie = name + "=; expires=" + cookieDate.toGMTString();
		}
		function get(cookie_name) {
			var results = document.cookie.match('(^|;) ?' + cookie_name
					+ '=([^;]*)(;|$)');
			if (results)
				return JSON.parse(unescape(results[2]));
			else
				return null;
		}
		function gen(name, value) {
			get(name) !== null && del(name);
			var expires, path, domain, secure, time = [0, 0, 0], tI = 0;
			function setTime(arg) {
				time[tI++] = arg
			}
			for ( var i = 2; i < arguments.length; i++) {
				var arg = arguments[i]
				switch (typeof arg) {
					case 'string' :
						if (arg == "on") {
							secure = true
						} else if (arg[0] === '/') {
							path = arg
						} else {
							domain = arg
						}
						break;
					case 'number' :
						setTime(arg)
						break;
					case 'boolean' :
						if (arg === true)
							setTime(2200);
						break;
				}
			}
			if (tI > 0) {
				expires = new Date(time[0], time[1], time[2])
			}
			set(name, value, expires, path, domain, secure)
		};
		window[name] = function(name, value) {
			if (arguments.length == 1) {
				return get(name)
			} else {
				if (value === null) {
					del(name)
				} else {
					gen.apply(this, arguments)
				}
			}
		}
	})(names['cookies']);
})();


cook('name', 10) //установить куку name в значение 4, на время сессии
cook('name') //получить значение
cook('name', 10, 2013, 9, 10) //установить на срок до 2013 год 9 месяц 10 день
cook('name', 10, 2013, 9) //установить на срок до 2013 год 9 месяц 1 день
cook('name', 10, 2013) //установить на срок до 2013 год 1 месяц 1 день
cook('name', 10, true) //установить на вечно


после имени и значения, можно добавлять необязательные параметры в произвольном порядке, это дата путь домен и защита

например
cook('name', 10, 2013, '/', 'javascript.ru')
cook('name', 10, 2013, 'javascript.ru', '/')
cook('name', 10, 2013, 'javascript.ru', 'on', '/')   //с включенной защитой 
cook('name', 10, 'on', 'javascript.ru')   //с включенной защитой без срока без пути
cook('name', 10, 'on')   //с включенной защитой на время сессии
cook('name', 10, true, 'on')   //с включенной защитой навечно
cook('name', 10, 'on', true)   //с включенной защитой навечно


и конечно же
cook('name', null) //удалить куку


единственное что если вы указываете дату а это number'ы, то number тип должен появляться в аргументах в порядке год месяц день, между годом и месяцем например МОГУТ быть другие параметры не связанные с датой, например "on". (вдруг кому то в жопу такое стрельнет)

cook('name', 10, 2012, 'on', 9) //2012 год 9 месяц, защита включина




Так же теперь в алерт можно параметры передавать через запятую, это вызывет алерт с каждым параметром по очереди.
давно себе такую шнягу хотел кстати))

все отключабильно, подключабильно, без зависимостей и конфликтов. Хотите че-то отключить - вырезаете кусок кода. хотите переименовать? переименовываете вверху.

Последний раз редактировалось Livaanderiamarum, 30.01.2012 в 09:24.
Ответить с цитированием