Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Как перехватить клик по ссылке?


Автор: Greendrake 24.9.2005, 00:23
Как сделать, чтобы при нажатии на ссылку
HTML
<a href="foo.html">foo</a>

вызывалась необходимая функция, НО: при этом переход по ссылке НЕ выполнялся??

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

Автор: Zeroglif 24.9.2005, 01:03
Это?

Код

<a href="foo.html" onclick="fooFunc();return false">foo</a>

Автор: Greendrake 24.9.2005, 08:48
Цитата(Zeroglif @ 24.9.2005, 01:03)
Это?

Код

<a href="foo.html" onclick="fooFunc();return false">foo</a>

Абсолютно точно, спасибо!

Для меня всегда оставалось загадкой, к чему все эти return true и return false в конце онкликов. Пробовал return true - не получалось, а return false не догадался.....

Автор: o.s.a. 24.9.2005, 09:03
Цитата(Greendrake @ 24.9.2005, 10:48)
Пробовал return true - не получалось, а return false не догадался.....

Просто если писать
Код

onclick="fooFunc();return true;"

то сначала выполнится функция, а потом все равно произойдет переход по ссылке, а если
Код

onclick="fooFunc();return false"

то перехода по ссылке не будет

Автор: Zeroglif 24.9.2005, 12:20
Есть ссылка:
Код

<a href="foo.html" onclick="fooFunc();return false">foo</a>

Скажем так, при клике на эту сслылку браузер смотрит в основной обработчик события - переход по адресу в атрибуте href. Но так как мы прописали дополнительный обработчик, то браузер сначала займётся им, а потом, в зависимости от того вернули ли ему false или true, вернётся к основному обработчику. Иными словами работает анонимная функция:
Код

function()
{
    fooFunc();
    return false;    
}

Функция вернула false - основной обработчик забыт. Правда, можно разбираться с этой проблемой и другими средствами (см. метод preventDefault() или свойство returnValue)...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)