Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Перехват перехода по якорю (https://javascript.ru/forum/jquery/16328-perekhvat-perekhoda-po-yakoryu.html)

danik.js 04.03.2014 12:45

Finesse, проверяй location.hash - это же элементарно.

Finesse 04.03.2014 12:56

Цитата:

Сообщение от Deff (Сообщение 278311)
milov,
window.location.replace(document.URL.split('#')[0])

Происходит переход на эту же страницу, но без якоря. Решения для Firefox пока нет.

Finesse 04.03.2014 12:58

Цитата:

Сообщение от danik.js (Сообщение 300883)
Finesse, проверяй location.hash - это же элементарно.

Я имел ввиду как отменить переход по якорю. Я уже нашёл, что надо написать
location.hash = "";
, но это не работает в Firefox.

danik.js 04.03.2014 13:11

Цитата:

Сообщение от Finesse
как отменить переход по якорю

Переход уже произошел. Поздно его отменять. Ты же сам пишешь:
Цитата:

Сообщение от Finesse
то есть если на страницу перешли сразу по ссылке с якорем (index.html#label)


CrazyPHP 02.07.2014 17:00

Мня тоже заинтересовала эта тема, как я и подозревал ответ удалось найти на зарубежных ресурсах, на них почему-то всегда отвечают по делу и без издёвок типо: "иди книжки почитай, червь".

Можно перехватить scroll событие сразу же после загрузки страницы но его нельзя отменить, однако можно сразу после загрузки выполнить новый scroll с любыми эффектами и в нужное место, в том числе и scroll к 0, т.е. как бы отменить скроллинг.

setTimeout(function() {
            if (window.location.hash) {               
                var hash = window.location.hash.substr(1);   
                var scrollPos = $('a[name="'+hash+'"]').offset().top; 
                $("html, body").animate({ scrollTop: scrollPos }, 1000);    
            }
        }, 1);

milov 11.07.2014 00:02

CrazyPHP,
спасибо.


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