firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.

Подсветка правого меню Sharepoint в страницах с хэшами?

Как подсвечивать ссылки в блоке навигации на страницы с анкорами?
Собственно возникла такая необходимость.
Страницы вида:
page.aspx
page.aspx?#linkone
page.aspx?#linktwo

Ожидаемое поведение: При выборе страницы в панели навигации, пункт выделяется
Реальное поведение: При выборе любой ссылки, выделяется последняя ссылка с анкором.
  • Вопрос задан
  • 37 просмотров
Решения вопроса 2
firedragon
@firedragon Автор вопроса
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Сам задал сам и отвечу.
Этот код добавляется через вставку кода. Дальше он приводит навигацию к ожидаемому поведению.
Впрочем возможно его добавить и в MasterPage

<script>
    function cleanUpMenu() {
      let nodes = document.querySelectorAll("li.selected");
      if (nodes.length > 0) {
        for (let i = 0; i < nodes.length; i++) {
          nodes[i].classList.remove("selected");
          var hrefs = nodes[i].getElementsByTagName("a");
          var href = hrefs[0];
          href.classList.remove("selected");
        }
      }
    }

    function selectByUrl(url) {
      let mi = document.querySelectorAll("a.ms-core-listMenu-item");
      for (let i = 0; i < mi.length; i++) {
        let item = mi[i];
        var href = item.getAttribute("href");
        if (url.endsWith(href)) {
          item.classList.add("selected");
          item.parentElement.classList.add("selected");
        }
      }
    }
    setInterval(() => {
      cleanUpMenu();
      selectByUrl(window.location.href);
    }, 1000);
  </script>
Ответ написан
Комментировать
Buzzz
@Buzzz
SharePoint | Office 365 | .Net Developer
В целом пока писал ответ вы и сами написали. По большому счёту в правильном направлении решение, я бы добавил всё это в SP.SOD и возможно избавился от таймаутов, а добавил вейтеры.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы