Якорные tags не работают в хроме при использовании #

Вот код, который я использую на своей странице,

  • Sound
  • (в меню, которое отображается на всех страницах)

      

    (на странице, на которой я хочу установить ссылку)

    Я попытался добавить контент в tags с идентификатором. Но только в Chrome браузер не будет прокручиваться до тега. Эти якоря работают в IE & FF. Любые идеи?

    Оказывается, это была ошибка в некоторых версиях хром, публикация обходного пути для всех, кто в ней нуждается! 🙂

     $(document).ready(function () { var isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor); if (window.location.hash && isChrome) { setTimeout(function () { var hash = window.location.hash; window.location.hash = ""; window.location.hash = hash; }, 300); } }); 

    Обходной ход не работал для меня, однако после нескольких дней поиска это, наконец, работало как прелесть, поэтому я решил, что стоит поделиться:

      $(function() { $('a[href*="#"]:not([href="#"])').click(function() { if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) { var target = $(this.hash); target = target.length ? target : $('[name=' + this.hash.slice(1) +']'); if (target.length) { $('html, body').animate({ scrollTop: target.offset().top }, 1000); return false; } } }); }); 

    Вот моя версия ответа @Jake_ для Chrome / angular, не прокручивающегося до правильного якоря при загрузке начальной страницы с использованием ui-router (исходный ответ забросил бы мой код в исключения Transition superseeded):

     angular.module('myapp').run(function($transitions, $state, $document, $timeout) { var finishHook = $transitions.onSuccess({}, function() { // Wait for the complete routing path to settle $document.ready(function() { // On DOM ready - check whether we have an anchor and Chrome var hash; var params; var isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor); finishHook(); // Deregister the hook; the problem happens only on initial load if ('#' in $state.params && isChrome) { hash = $state.params['#']; // Save the anchor params = _.omit($state.params, ['id', '#']); $timeout(function() { // Transition to the no-anchor state $state.go('.', params, { reload: false, notify: false, location: 'replace' }); $timeout(function() { // Transition back to anchor again $state.go('.', _.assign($state.params, { '#': hash }), { reload: false, notify: false, location: 'replace' }); }, 0); }, 0); } }); }, {invokeLimit: 1}); }); 
        
  • Sound
  • I AM CALLED

    используйте это как свой код, он будет вызывать анкерный тег с звуком значения id

    Просто измените вызов на свою ссылку на внешний.