Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   jquery-ui.min.js как запретить изменения адресной строки браузера? (https://javascript.ru/forum/jquery/73774-jquery-ui-min-js-kak-zapretit-izmeneniya-adresnojj-stroki-brauzera.html)

oleg13321 14.05.2018 09:45

jquery-ui.min.js как запретить изменения адресной строки браузера?
 
Использую jquery-ui.min.js для создания аккордеона на сайте.
Сайт на Modx динамику Fenom-ом прописываю.

Столкнулся с проблемой.
На всех страницах, в которых присутствует аккордеон адресная строка приобретает такой вид:
http://celestaclub.ru/#ui-id-3

А это приводит к тому, что после обновления страницы, идет переадресация на главную. Что ни есть хорошо для меня.

Ссылка на то откуда я его взял: http://nisnom.com/veb-razrabotki/jqu...ion/#more-1702

На самом сайте источнике, я такой особенности не замечаю.
Объясните, пожалуйста, что я , возможно, сделал не так или наоборот не сделал.

Сам код, который у меня собственно и работает. Руководствуясь принципом: "работает не трогай", ничего не менял.
'use strict';

var $uiAccordion = $('.js-ui-accordion');

$uiAccordion.accordion({
  collapsible: true,
  heightStyle: 'content',

  activate: function activate(event, ui) {
    var newHeaderId = ui.newHeader.attr('id');

    if (newHeaderId) {
      history.pushState(null, null, '#' + newHeaderId);
    }
  },

  create: function create(event, ui) {
    var $this = $(event.target);
    var $activeAccordion = $(window.location.hash);

    if ($this.find($activeAccordion).length) {
      $this.accordion('option', 'active', $this.find($this.accordion('option', 'header')).index($activeAccordion));
    }
  }
});

$(window).on('hashchange', function (event) {
  var $activeAccordion = $(window.location.hash);
  var $parentAccordion = $activeAccordion.parents('.js-ui-accordion');

  if ($activeAccordion.length) {
    $parentAccordion.accordion('option', 'active', $parentAccordion.find($uiAccordion.accordion('option', 'header')).index($activeAccordion));
  }
});

Rise 14.05.2018 09:53

Оставить так, остальное в принципе не нужно.
$('.js-ui-accordion').accordion({ collapsible: true, heightStyle: 'content' });

oleg13321 14.05.2018 10:16

Цитата:

Сообщение от Rise (Сообщение 485279)
Оставить так, остальное в принципе не нужно.
$('.js-ui-accordion').accordion({ collapsible: true, heightStyle: 'content' });

Я правильно понимаю, что всю ту остальную портянку заменить на эту строку?

oleg13321 14.05.2018 10:18

Спасибо))):dance:

А можете объяснить, что было не так?!

Rise 14.05.2018 10:47

Цитата:

Сообщение от oleg13321
А можете объяснить, что было не так?!

Шутите? Я же написал.

oleg13321 14.05.2018 16:06

Ну...
Я понадеялся, что мне прям тыкая в лицо знаниями будут говорить, вот эта строка делает то то и из-за нее у тебя менялось значение адресной строки. И вообще растолковать неофиту, что да как и как делать не нужно, на этом примере)
Или еще как-то)
Ну... увы и ах.
А так, я собственно понял о чем там. :agree:

Nexus 14.05.2018 16:08

Цитата:

Сообщение от oleg13321
Я понадеялся, что мне прям тыкая в лицо знаниями будут говорить, вот эта строка делает то то и из-за нее у тебя менялось значение адресной строки.

Из-за вот этой вот стоки у вас менялось значение адресной строки:
history.pushState(null, null, '#' + newHeaderId);

Rise 14.05.2018 16:13

oleg13321,
Вся остальная портянка отвечала за адресную строку. А зачем вам подробности? Если вам интересно зачем это было надо в оригинале, то чтобы при переходе по такой ссылке открывалась соответствующая вкладка аккордеона.


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