Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.04.2011, 09:40
Аватар для InviS
Кандидат Javascript-наук
Отправить личное сообщение для InviS Посмотреть профиль Найти все сообщения от InviS
 
Регистрация: 19.02.2010
Сообщений: 116

Перехват перехода по якорю
Подскажите, пожалуйста, можно ли как-то перехватить переход по якорю? К примеру, если у меня есть ссылка:
index.php#part1, то по нажатию на ней мы сразу опустимся к id='part1'. Можно ли как-то перехватить и отменить переход по якорю или же сделать какие-то действия, а уже потом переходить к якорю на странице..?
Ответить с цитированием
  #2 (permalink)  
Старый 04.04.2011, 10:09
Аватар для walik
Профессор
Отправить личное сообщение для walik Посмотреть профиль Найти все сообщения от walik
 
Регистрация: 09.11.2009
Сообщений: 1,101

<a href="#part1" onclick="myFunc();">Click</a>

Так будет выполнена функция myFunc и потом будет переход по якорю.

<a href="#part1" onclick="myFunc(); return false;">Click</a>

Так будет выполнена функция myFunc, а перехода по якорю не будет.
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай
Ответить с цитированием
  #3 (permalink)  
Старый 04.04.2011, 14:16
Аватар для InviS
Кандидат Javascript-наук
Отправить личное сообщение для InviS Посмотреть профиль Найти все сообщения от InviS
 
Регистрация: 19.02.2010
Сообщений: 116

Внутри страницы у меня и так все прекрасно работало... Я имел в виду перехват перехода по якорю на вновь загруженной странице. К примеру, если я перейду по ссылке:
index.php#part1 из документа help.php к примеру... т.е. я загрузил документ и браузер меня поставил на нужное место сразу же.. а я хочу сделать переход плавным.. как мне отменить стандартный браузеровский эффект перебрасывания?
Ответить с цитированием
  #4 (permalink)  
Старый 04.04.2011, 14:34
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

я думаю вам придётся копать от события scroll.
__________________
.
Ответить с цитированием
  #5 (permalink)  
Старый 04.04.2011, 14:42
Профессор
Отправить личное сообщение для Matre Посмотреть профиль Найти все сообщения от Matre
 
Регистрация: 07.01.2011
Сообщений: 582

(function ($) {
	$.fn.preventJump = function (time) {
		return this.click(function (event) {
			$("body").animate({
				scrollTop : $("#" + this.href.split("#")[1]).offset().top
			}, time || 500);
			event.preventDefault();
		});
	};
})(jQuery);

$("a.test").preventJump(300);


<a href='#test' class='test'>
	Тест
</a>

...

<div id='test'>
	Сюда
</div>
Ответить с цитированием
  #6 (permalink)  
Старый 04.04.2011, 14:47
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

Matre,
Это по моему не то, что просили
и это "#" + this.href.split("#")[1] , по моему можно переписать так: location.hash
__________________
.
Ответить с цитированием
  #7 (permalink)  
Старый 04.04.2011, 15:11
Аватар для InviS
Кандидат Javascript-наук
Отправить личное сообщение для InviS Посмотреть профиль Найти все сообщения от InviS
 
Регистрация: 19.02.2010
Сообщений: 116

Matre,
Все это я уже реализовал.. меня интересует именно перехват при переходе на новую страницу. Возможно ли вообще перехватить это событие?!
Skipp,
Попробую поискать на англ. форумах относительнос scroll.. но сомневаюсь, что получится найти =) Хотя, может возможностями чистого js можно как-то отменить переход по якорю
Ответить с цитированием
  #8 (permalink)  
Старый 04.04.2011, 15:23
Аватар для Serg_pnz
Сам по себе
Отправить личное сообщение для Serg_pnz Посмотреть профиль Найти все сообщения от Serg_pnz
 
Регистрация: 09.06.2009
Сообщений: 963

Я делал не скролл к якорю, а скролл к элементу с id
пример http://yphp.jcase.ru/#scrollto=newsz
Ответить с цитированием
  #9 (permalink)  
Старый 04.04.2011, 19:19
Аватар для Magneto
Люмус, Емаксос Developer!
Отправить личное сообщение для Magneto Посмотреть профиль Найти все сообщения от Magneto
 
Регистрация: 06.05.2010
Сообщений: 677

А ларчик то просто открывается.

if (window.location.hash) {alert("Событие")}


Ссылка без я коря
Ссылка с якорем
Ответить с цитированием
  #10 (permalink)  
Старый 05.04.2011, 22:01
Аватар для InviS
Кандидат Javascript-наук
Отправить личное сообщение для InviS Посмотреть профиль Найти все сообщения от InviS
 
Регистрация: 19.02.2010
Сообщений: 116

Serg_pnz,
У вас было что-то похожее на то, что мне нужно... Подмена hash? или как это вообще сделано? там мутулз и непонятно в каком файле искать ответ...
Magneto,
Ничего не понял... Вывести алерт по признаку хэша - не сложно. Как отменить действие браузера - перекидывание в эту точку - вот, что мне интересно....

Последний раз редактировалось InviS, 05.04.2011 в 22:06.
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отправка POST через JS без перехода на другую страницу m-mikle Общие вопросы Javascript 17 14.04.2010 15:24
имитация перехода по ссылке kalisha Events/DOM/Window 2 30.01.2010 17:10
Шапка сайта (или изображение) меняется в зависимости от источника перехода vstoday Общие вопросы Javascript 2 16.01.2010 16:00
Перехват перехода Gorshog Серверные языки и технологии 11 14.01.2010 19:04
Переход по якорю в ИЕ Ozzy Internet Explorer 0 02.07.2009 11:35