Как мне изменить свой JS-код для работы с моей новой структурой URL?

#javascript #url

#javascript #url

Вопрос:

Я пытаюсь извлечь строку поиска из URL.

Я могу это сделать, когда URL выглядит следующим образом:

 http://domain.com/search/keyword
  

но не тогда, когда URL выглядит так:

 http://domain.com/#/search/keyword
  

Ниже приведен код Javascript, который работал для моего первого примера, за исключением того, что я не могу заставить его работать теперь, когда структура URL изменилась.

 function () {
  // find and store the path of the current page
  var pagePath = location.pathname;
  // if the path starts with /search/, we know it's an internal SERP
  if (pagePath.indexOf("/search/") === 0) {
    // if the above checks out, let's figure out where the search term begins in the URL. Then, let's use that starting point to pull out the search term itself.
    var searchString = pagePath.substring(pagePath.lastIndexOf("/")   1);
    // return what we found to GTM as the value of our variable
    return searchString;
  }
  // if it's not an internal SERP page, return "none"
  else {
    return "none";
  }
}
  

Приведенный выше код отлично работает, когда структура URL выглядит следующим образом:

http://domain.com/search/keyword

но не тогда, когда это выглядит так:

 http://domain.com/#/search/keyword
  

Вопрос в том, как мне изменить свой JS-код выше, чтобы он работал с моей новой структурой URL?

Я попытался изменить часть своего JS-кода с:

   if (pagePath.indexOf("/search/") === 0) {
  

Для

   if (pagePath.indexOf("/#/search/") === 0) {
  

но я не могу заставить его работать. Пожалуйста, помогите 🙂

Ответ №1:

Символ хэша # обозначает фрагмент URL и не является частью pathname . Вы можете получить доступ к фрагменту URL с помощью location.hash