Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как сделать некликабельную ссылку? (https://javascript.ru/forum/events/26379-kak-sdelat-neklikabelnuyu-ssylku.html)

alexandr_v-vich 06.03.2012 17:04

Как сделать некликабельную ссылку?
 
Как сделать некликабельную ссылку с помощью javascript? Нужно не только отменять переход, но и вообще чтоб было не ткнуть её). Лучший бы вариант pointer-events, но как его реализовать в javascript? SetAttribut?

SkyLight 06.03.2012 17:21

Положить сверху прозрачный div...

alexandr_v-vich 06.03.2012 17:22

Да, думал...но как-то......как-то не алё).....на крайний случай оставил..

_Vadik_ 06.03.2012 17:26

onClick="return false"

alexandr_v-vich 06.03.2012 17:39

_Vadik_, такой вариант, к сожалению, не подходит.

Так, всё же, через SetAttribut это возможно сделать?

Rootpassword 06.03.2012 17:55

А зачем вам ссылка, которая не будет ссылкой? Ради курсора? вы его всегда в style задать можете.

alexandr_v-vich 06.03.2012 18:06

Rootpassword, она должна переставать быть ссылкой в определённый момент.....чтобы не сбить анимацию (а та повязана так, что её остановить довольно сложно, вот и думаю, чтобы её вообще прервать нельзя было)

Serg_pnz 06.03.2012 18:13

alexandr_v-vich,
В своё время занимал меня этот вопрос, но ничего умнее, чем закрывать прозрачным div'ом на время анимации не придумал.

T-sh 06.03.2012 18:33

а что мешает в начале анимации сбросить href, а по завершению опять добавить?

Serg_pnz 06.03.2012 19:06

Цитата:

Сообщение от T-sh (Сообщение 161735)
а что мешает в начале анимации сбросить href, а по завершению опять добавить?

Сбрасывать наверное надо не href, а событие, на него повешенное.

T-sh 06.03.2012 19:09

Цитата:

Сообщение от Serg_pnz (Сообщение 161747)
Сбрасывать наверное надо не href, а событие, на него повешенное.

а смысл? если событие не принудительно вышается (не через js), то оно всё равно срабатывать будет только при наличии href'a.

а если принудительно — то да, сбрасывать событие.

Serg_pnz 06.03.2012 19:15

T-sh,
ну вот и докопались до истины, что можно обойтись без div'а:victory:

alexandr_v-vich 06.03.2012 19:15

Цитата:

Сообщение от T-sh (Сообщение 161748)
а смысл? если событие не принудительно вышается (не через js), то оно всё равно срабатывать будет только при наличии href'a.

а если принудительно — то да, сбрасывать событие.

Принудительно. И сбросить мне его тяжело....быстрее и проще даже div прозрачный...

nikita.mmf 07.03.2012 11:47

var toggleClickableLink = (function (){
    var stopHandler = function ( e ) { e.preventDefault && e.preventDefault() || (window.event.returnValue = false); };
    return document.addEventListener ? function ( linkObj ) {
        linkObj[ (linkObj.isDisable ? "remove" : "add") + "EventListener" ]("click", stopHandler, false);
        linkObj.isDisable = !linkObj.isDisable;
    } : function ( linkObj ) {
        linkObj[ (linkObj.isDisable ? "de" : "at") + "tachEvent" ]("onclick", stopHandler);
        linkObj.isDisable = !linkObj.isDisable;
    };
})();

toggleClickableLink( document.getElementById("myLink") );//запрещаем переход
toggleClickableLink( document.getElementById("myLink") );//возвращаем возможность перехода

alexandr_v-vich 07.03.2012 17:03

nikita.mmf, к сожалению ничего не понял, но это мои проблемы, небольшой вопрос - мне нужно не переход запретить, а сам клик, то, что вы написали про это?

vladimircape 07.03.2012 17:35

Цитата:

Сообщение от nikita.mmf (Сообщение 161846)
var toggleClickableLink = (function (){
    var stopHandler = function ( e ) { e.preventDefault && e.preventDefault() || (window.event.returnValue = false); };
    return document.addEventListener ? function ( linkObj ) {
        linkObj[ (linkObj.isDisable ? "remove" : "add") + "EventListener" ]("click", stopHandler, false);
        linkObj.isDisable = !linkObj.isDisable;
    } : function ( linkObj ) {
        linkObj[ (linkObj.isDisable ? "de" : "at") + "tachEvent" ]("onclick", stopHandler);
        linkObj.isDisable = !linkObj.isDisable;
    };
})();

toggleClickableLink( document.getElementById("myLink") );//запрещаем переход
toggleClickableLink( document.getElementById("myLink") );//возвращаем возможность перехода

Попробывал всё работает. А вот как такое сделать с <button>

Tim 07.03.2012 17:57

Цитата:

А вот как такое сделать с <button>
думаю также, тока передав id button'a. этот код кроссбраузерно вешает обработчик события который кроссбраузерно останавливает действие по дефолту (в данном случае переход поссылке). если button type=submit то должана отмениться отправка формы. проверьте. мне кажется должно сработать.


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