Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Обработка строки запроса после решётки (www.сайт.ru/#123) (https://javascript.ru/forum/misc/4430-obrabotka-stroki-zaprosa-posle-reshjotki-www-sajjt-ru-123-a.html)

constantant 21.07.2009 18:03

Обработка строки запроса после решётки (www.сайт.ru/#123)
 
Здравствуйте.
Хотел бы узнать какие бывают методы обработки содержимого адресной стоки, после решётки (#).
Хочется сделать что-то вроде как в vkontakte в ускореном режиме просмотра фотографий.

:help:

Kolyaj 21.07.2009 18:07

А какие нужны?

constantant 21.07.2009 18:14

Цитата:

Сообщение от Kolyaj (Сообщение 24955)
А какие нужны?

В общем хотелось бы понять главный принцип:
1)Как узнать что находится после решётки
2)Какой должен быть обработчик, чтобы он каждый раз срабатывал когда нажимают на ссылку на якорь (#page-2).

B~Vladi 21.07.2009 18:16

получить/задать можно через location.hash;. Ну и пиши что-то вроде sd|asd|wdfdf|
А потом в массив скидывай:) Или я не так понял чёта:-?

Kolyaj 21.07.2009 18:17

Цитата:

Сообщение от constantant
1)Как узнать что находится после решётки

document.location.hash

Цитата:

Сообщение от constantant
2)Какой должен быть обработчик, чтобы он каждый раз срабатывал когда нажимают на ссылку на якорь (#page-2).

Периодически проверять, не изменилось ли.

B~Vladi 21.07.2009 18:17

Цитата:

Сообщение от constantant
Какой должен быть обработчик, чтобы он каждый раз срабатывал когда нажимают на ссылку на якорь (#page-2).

onclick по ссылке:-?

Kolyaj 21.07.2009 18:18

Цитата:

Сообщение от B~Vladi
onclick по ссылке

Слишком однобоко.

constantant 21.07.2009 18:20

Цитата:

Сообщение от B~Vladi
получить/задать можно через location.hash;. Ну и пиши что-то вроде sd|asd|wdfdf|
А потом в массив скидывай Или я не так понял чёта

за location.hash - спасибо)
а вот как отслеживать что произошёл переход на якорь? или надо каждый раз на ссылку ставить функцию по обработке?

constantant 21.07.2009 18:24

Цитата:

Сообщение от Kolyaj
Периодически проверять, не изменилось ли.

а какой период? хотелось бы чтоб не было багов.

B~Vladi 21.07.2009 18:29

location.hash, кстати, включает в себя решетку, т.е. и задавать надо с ней:)
Цитата:

Сообщение от constantant
а вот как отслеживать что произошёл переход на якорь?

Вобщем, вешаешь на document.body обработчик onclick, узнаёшь цель события, проверяешь ссылка ли это и куда ведёт и если всё ок - делаешь то, что надо:)

constantant 21.07.2009 18:33

Цитата:

Сообщение от B~Vladi
location.hash, кстати, включает себя решетку, т.е. и задавать надо с ней
Сообщение от constantant
а вот как отслеживать что произошёл переход на якорь?
Вобщем, вещаешь на document.body обработчик onclick, узнаёшь цель события, проверяешь ссылка ли это и куда ведёт и если всё ок - делаешь то, что надо

так вот ещё тогда ряд вопросов:
как узнать цель события?
как проверить ссылка ли это и куда она ведёт?)

в общем в рунете не особо просто найти что-то по этой теме... может тогда лучше здесь привести какой-нить примерчик?)

B~Vladi 21.07.2009 18:36

Цитата:

Сообщение от constantant
как узнать цель события?

evt=evt||event;
var e=evt.target||evt.srcElement;

Функция-обработчик должна принимать параметр evt (function(evt){...})
Цитата:

Сообщение от constantant
как проверить ссылка ли это и куда она ведёт?)

if(e.tagName=='A' && e.href.indexOf('#')) alert('Это точно закладка;)');

constantant 21.07.2009 18:38

вот спасибо! как сделаю хорошо работающий пример - выложу. :thanks:

B~Vladi 21.07.2009 18:39

ок:)

constantant 21.07.2009 18:51

вот пример, но он как-то по другому сделан... возможно, что действительно есть функция, которая постоянно смотрит что находится в адресной строке http://iphone.orange.fr/#/forfaits/option/

constantant 21.07.2009 18:55

ага.. тут используется фреймворк swfaddress.js ... хм.. интересно)

B~Vladi 22.07.2009 11:20

Там вообще флэш... Нет такого уха, чтобы слушать строку... Чем вам мой вариант не нравится?!

constantant 22.07.2009 13:45

Цитата:

Сообщение от B~Vladi
Там вообще флэш... Нет такого уха, чтобы слушать строку... Чем вам мой вариант не нравится?!

Ваш вариант нравится, но я же ищу не один способ)
а эта библиотека (swfaddress.js) не только для работы с флэшем.

B~Vladi 22.07.2009 13:47

Цитата:

Сообщение от B~Vladi
Нет такого уха, чтобы слушать строку...

Значит приходится выкручиваться... Варианта лучше я вам предложить не могу... Это всё таки намного лучше чем вешать обработчики на все ссылки... Может кто и подскажет другое...

x-yuri 23.07.2009 15:41

Цитата:

Сообщение от Kolyaj
Периодически проверять, не изменилось ли

Kolyaj, а что нельзя прямо на сервере генерировать "правильные" ссылки?

constantant, почитай еще
http://habrahabr.ru/blogs/fullajax/
http://habrahabr.ru/blogs/webdev/27571/#habracut
http://fullajax.ru/

Kolyaj 23.07.2009 15:47

x-yuri,
ссылки куда? Они и так "правильные" -- с нужными якорями.

constantant 23.07.2009 15:55

Цитата:

Сообщение от x-yuri

Спасибо), то что нужно)

x-yuri 23.07.2009 16:01

Цитата:

Сообщение от Kolyaj
ссылки куда? Они и так "правильные" -- с нужными якорями.

я имел в виду, чтобы на них сразу обработчик стоял, который нужные действия выполнит. Фактически это может быть что-то типа <a href="<url>" onclick="return get('<url>')"...

Kolyaj 23.07.2009 16:11

Вперед/назад не будет работать.

mat_ppc 20.01.2011 07:44

Допустим я изменил hash вручную, в строке браузера, как поймать?

B~Vladi 20.01.2011 10:26

setInterval

mat_ppc 20.01.2011 23:56

Цитата:

Сообщение от B~Vladi
setInterval

Я к тому же... смысл прикручивать на onClick?

B~Vladi 21.01.2011 00:07

Цитата:

Сообщение от mat_ppc
смысл прикручивать на onClick?

Тут каждом конкретном случае нужно выбирать либо тот, либо другой вариант. В общем, всё от задачи зависит.


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