Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Разделить hash url на части (https://javascript.ru/forum/events/56294-razdelit-hash-url-na-chasti.html)

Infinity178 08.06.2015 23:33

Разделить hash url на части
 
Доброго времени суток.

ни как не могу найти возможность разделить URL.

url формата:
http://exemple.com/index.php?module=XXX#key&type&id=1

location.hash;
выдает #tabs&key=1&id=1

На выходе нужно разделить хэш на части:
ключ, тип, айди + значение

Если возможно, то каким методом?

Vlasenko Fedor 08.06.2015 23:58

Цитата:

Сообщение от Infinity178
#tabs&key=1&id=1

а это корректный хеш тег?
function hash(key) {
	var hash = {}, q;
	if (location.hash) {
		var arr = location.hash.slice(1).split('&');
		for (var i = 0; i < arr.length; i++) {
			if (q = arr[i].split('='))
				hash[q[0]] = decodeURIComponent(q[1]) || null;
		}
	}
	return key
			? hash.hasOwnProperty(key) ? hash[key] : null
			: hash;
}
console.log(hash('id'));

Infinity178 09.06.2015 00:08

Чувствую уже начинаю тупить.. но
вот рабочий хэш #Managers&editorManager&id=1
Из него нужно вытащить
- Managers
- editorManager
- 1

pb_ 09.06.2015 00:09

alert(
"http://exemple.com/index.php?module=XXX#key&type&id=1"
 .replace(/[^#]+#/, "").split("&")
)

pb_ 09.06.2015 00:14

Цитата:

Сообщение от Infinity178
Из него нужно вытащить
- Managers
- editorManager
- 1

alert(
"http://exemple.com/index.php?module=XXX#Managers&editorManager&id=1"
 .replace(/[^#]+#/, "").split("&").map(function(s){return s.replace(/[^=]+=/, "")})
)

Infinity178 09.06.2015 00:18

супер. а как теперь их разбить?

pb_ 09.06.2015 00:19

В смысле? это уже разбитый массив строк.

Infinity178 09.06.2015 00:23

Прошу прощения уже засыпаю на ходу..
Но
сейчас на выходе: Managers,editorManager,13
как теперь их занести в data : { key : Managers, type : editorManager, id : 13 },

Octane 09.06.2015 00:25

alert(new URL('http://exemple.com/index.php?module=XXX#key&type&id=1').hash)

https://github.com/inexorabletash/po.../master/url.js
https://developer.mozilla.org/en-US/docs/Web/API/URL

pb_ 09.06.2015 00:28

Infinity178,
в простом случае можно так:
arr="http://exemple.com/index.php?module=XXX#Managers&editorManager&id=1"
 .replace(/[^#]+#/, "").split("&").map(function(s){return s.replace(/[^=]+=/, "")})

data={key: arr[0], type: arr[1], id: arr[2]}
console.log(data)

Vlasenko Fedor 09.06.2015 00:32

э!!! ребята хватит то велосипедить
первый ответ рабочий и справляется с данной задачей
без регулярных выражений и внешних библиотек
или мы легких путей не ищем?

pb_ 09.06.2015 00:34

Цитата:

Сообщение от Poznakomlus
или мы легких путей не ищем?

Это скорей про Ваш вариант

Octane 09.06.2015 00:35

Это не либа, а полифил, в большинстве браузеров конструктор URL встроен. Для такого полезного функционала не жалко пару килобайт кода подключить. Регулярками парсить последнее дело…

Infinity178 09.06.2015 00:35

Цитата:

Сообщение от pb_ (Сообщение 374377)
pb_,

Все благодарю! достаточно было arr[0] дальше все понятно) От души спасибо.

Infinity178 09.06.2015 00:41

Цитата:

Сообщение от Octane (Сообщение 374381)
Это не либа, а полифил, в большинстве браузеров конструктор URL встроен. Для такого полезного функционала не жалко пару килобайт кода подключить. Регулярками парсить последнее дело…

Не могу оспаривать ваше предложение, но как всегда - время не ждет. С polyfill ранее не сталкивался. Но на будущее благодарю за направление.


Часовой пояс GMT +3, время: 10:11.