Запретить браузеру переходить на якоря - PullRequest
3 голосов
/ 19 апреля 2011

Как я могу запретить браузеру переходить на якорные ссылки?

Я знаю, что могу использовать "return false" для события onclick или, если кто-то использует mootools, сделать что-то подобное

$('button').addEvent('click', function(e) {
e.stop()
//do blabla 
});

Это остановит браузер от перехода на якорь, но я хочу сохранить якорь в URL, чтобы можно было поделиться ссылкой.Я использую якорь на самом деле для отображения динамической информации.

Есть идеи?

Ответы [ 2 ]

4 голосов
/ 19 апреля 2011

Просто сразу же вернитесь к началу страницы.

self.scrollTo(0, 0)

У меня был плагин, который сделал это, и это случилось так быстро, что я просто подумал, что якоря были сломаны. Я не думаю, что кто-нибудь заметит.

2 голосов
/ 19 апреля 2011

У меня еще не было возможности протестировать этот кросс-браузер, поэтому он может с треском провалиться в IE, но вот как я обновляю URL с помощью хэш-ссылок, обрабатывая фактическое действие, которое происходит при различном нажатии на них (используя API истории HTML5 ):

var setHash = function(hash) {
    // Make sure that the hash is the first character, and extract from (presumably) full URL if not
    if (hash.indexOf('#') > 0) {
        hash = hash.substr(hash.lastIndexOf('#'));
    } else if (hash.substr(0, 1) !== '#') {
        hash = '#' + hash;
    }
    // Add our hash element to the history/URL
    if (window.history.pushState) {
        window.history.pushState(null, null, hash);
    } else {
        window.location = hash;
    }
};

$('button').addEvent('click', function(e) {
    e.stop()
    setHash(this.get('href'));
    //do blabla 
});
...