тэг <a>: onclick раньше href

Eugene_M

Новичок
тэг <a>: onclick раньше href

Задачка следующая.
есть линка:
<a href="url" onclick="action">Text</a>

Можно ли сделать так, чтобы по клику происходило событие onclick, но при этом, чтобы не срабатывал переход на страницу "url" указанную в параметре href.

Блин... пока писал пост сам решение нашёл.

Ход мыслей: =)
<a href="1.txt" onclick="alert('!!!');exit();">Text</a>
<a href="1.txt" onclick="alert('!!!');"><div onclick="alert('div');return( false);">Text</div></a>
<a href="1.txt" ><div onclick="alert('div');return( false);">Text</div></a>
<a href="1.txt" onclick="alert('div');return(false);">Text</a>
 

BRat

o_0
верно, или тоже самое можно осуществить при помощи обьекта window.event.returnValue = false (IE), onclickhandler.arguments[0].preventDefault() (Mozilla)
 

kruglov

Новичок
BRat
Ага, а если постараться, можно еще длиннее.
Для Оперы озвучьте, пожалуйста, длинное решение тоже.
 

hermit_refined

Отшельник
deepslam
Угу. Дизайнер, с которым я работаю, всегда такую фигню пишет, давно хочу его за это убить.

Во-первых, происходит скроллинг к началу страницы.
Во-вторых, уродливое '#' в урле.
 

akxxiv

Новичок
deepslam
Угу. Дизайнер, с которым я работаю, всегда такую фигню пишет, давно хочу его за это убить.

Во-первых, происходит скроллинг к началу страницы.
Во-вторых, уродливое '#' в урле.
А смысл? Пусть пишет
<a href="нужный_урл" onclick="return action();">click me</a>, а action() пусть возвращает false
 

Фанат

oncle terrible
Команда форума
а зачем action? почему нельзя сразу написать false ?
 

hermit_refined

Отшельник
akxxiv
Спасибо, я знаю что он должен писать (но не то, что пишете вы). Я не знаю, как его убить.
 

phprus

Moderator
Команда форума
akxxiv
Не согласен. Допустим вы забыли написать в функции action return false; Тогда броузер будет вести себя явно не так как вы ожидали. Особенно легко ошибиться, если в функции action несколько операторов return. Тогда в каком то из них можно по ошибке написать что-нибуть другое вместо false.
 

akxxiv

Новичок
Мне кажется, но это только мое мнение, что легче пропустить return false в одной из конструкции <a href="url" onclick="action(); return false"> чем один раз в функции action().

Но, в общем у каждого свои трудности.
 
Сверху