Здравствуйте! Представляю вам фреймворк для работы с хеш-частью URL marinad.js
! Благодаря ему создание сайтов на ajax-технологиях упростится в разы, ведь теперь можно будет обновлять URL и получать оттуда переменные без перезагрузки страницы! О том, как сие чудо работает подробно расписано под катом:
Создаем экземпляр объекта
Для начала мы должны создать («инсталлировать») объект Marinad. Инсталлируется он без аргументов, т.е:
var m = new Marinad();
Управление хешом
Далее мы переходим как-раз к управлению хешем страницы. Библиотека использует хеш (часть URL, после знака #) для того, чтобы задавать и извлекать значения вида ключ=значение.
Определение и изменение переменных в хеше
Определение и изменение переменных производится с помощью метода
Marinad.set(key[ ,value, flag]);
Метод принимает 2 аргумента: key
и value
. Ключ и значение соответственно. Метод проверяет, есть ли в хеше уже данный ключ, и если есть, то заменяет его значение на новое, если же нет, то добавляет его, приравнивая к заданному в value
значению.
Метод поддерживает определение сразу нескольких переменных. Задаются они в виде
Marinad.set({key1: value1, key2: value2, ..., keyN: valueN});
Также метод принимает аргумент flag
, который является булевым значением и определяет, заменять ли значения переменных, если они ранее уже были определны.
Marinad.set('user', 'vasya', false);
проверит хеш на наличие переменной user
и если не найдет таковой, то определит ее со значением vasya.
Marinad.set({user: 'vasya', page: 'main'}, false);
проверит хеш на наличие переменной user (и если ее нету, то добавит), затем проверит хеш на наличие переменной page (и если ее нету, то добавит).
Выборка переменных из хеша
Выборка может производиться либо по ключу, либо по значению. Сразу можно указывать несколько ключей или значений. За выборку отвечает метод
Marinad.select(val[ ,settings]);
В аругмент key передается значение ключа (или значения, если settings == true).
Есть 2 типа вывода данных: В числовой массив и в объект. В объекте они расположены в виде obj.key=value
, а в массиве arr[i]=value
Если вам необходимо сделать выборку сразу по нескольким ключам (значениям), то val необходимо задавать, как массив, в котором будут перечисляться ключи (или значения).
Если settings == boolean
, то он задает тип выборки (true
— по значениям, false
— по ключам (по умолчанию false
))
Иначе settings.gSearch
(алиас settings.gs
) задает выборку по ключам или по значениям, а settings.ns
тип вывода данных (true
— в объект, false
— в массив (по умолчанию false
))
Удаление переменных из хеша
Удаление переменных производится подобно выборке. За удаление отвечает метод
Marinad.del(val[, flag]);
В аргумент val
передается строка (или массив), а в аргумент flag передается булево значение.
Если val == string, то удаляется переменная с ключом (или значением (в зависимости от flag)), равным val.
Если val == array, то удаляются все переменные с ключами (или значениями), занесенными в array.
И как было сказано раньше, flag определяет метод удаления переменных (по значению, или по ключу).
Свойства экземпляра
Marinad.getHash([ flag ]);
выведет массив (если !flag
), содержащий элементы вида «ключ=значение». Если flag == Array
, то выведет массив массивов, содержащий элементы вида [ключ, значение], [ключ, значение]. Пример использования:
var hash = mar.getHash([]);
Если flag == true
, то выведет строку с location.hash
(без знака #)
Переопределяемые методы
Экземпляр содержит только один переопределяемый метод
Marinad.onhc = function () {};
Это некий callback, выполняющийся каждый раз после изменения хеша.
P.S: Данная библиотека использует JQuery и плагин для него onhashchange (работает и без плагина, но только в новых версиях браузеров (которые поддерживают window.onhashchange
).
marinad.full.min.js
содержит сразу marinad.min.js
и onhashchange.min.js
.
marinad.min.js
— содержит только самого себя (сжатая версия).
marinad.js
— полная версия для разработчиков. Извиняюсь, за отсутствие readme и доков:)
Скачать можно на GitHub
Автор: mannaro