Если я нажму на ссылку, я хочу получить QUERY STRING ее [дубликата]

Насколько я знаю, window.location делает именно то, что вы ищете, вызывая по умолчанию ссылку на ссылку браузера по умолчанию.

Некоторые браузеры замечают протокол до того, как будут запущены какие-либо события или фактический href Изменен.

window.location = "mailto:somebody@example.com";

Попробуйте демонстрацию скрипта, упомянутую ниже. Я получаю следующие результаты:

  • Chromium: срабатывает onbeforeunload с помощью кнопки и ссылки
  • Firefox срабатывает onbeforeunload только для кнопки
  • Safari: никогда не срабатывает onbeforeunload
  • Opera: то же, что и Safari

хороший способ предотвратить запуск события unload - это вернуть false в beforeunload.

-1
задан J.vee 17 January 2019 в 15:59
поделиться

3 ответа

Если вы хотите, чтобы путь был указан только в URL-адресе, укажите ссылку на путь с привязки, которую вы щелкнули. Вы также не должны использовать атрибуты для определения обработчика кликов.

$('a').on('click', function (evt) {
  evt.preventDefault()
  var path = hideref(this.pathname);
  console.log(path);
  //window.location.href = path;
});

function hideref(strUrl) {
  return "https://example.com/?q=" + encodeURIComponent(strUrl);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a href="https://example.com/post/1">link 1</a>

0
ответ дан epascarello 17 January 2019 в 15:59
поделиться

Вместо использования this.href для отправки URL-адреса в функцию hideref следует использовать this.pathname ( источник ).

Ваш код будет выглядеть так:

<script type="text/javascript">
    $('a').click(function() {
      window.location.href = hideref(this.pathname + this.search);
      return false;
    });
    function hideref(strUrl){
        return "https://test.xyz/?q="+escape(strUrl);
    }
</script>
0
ответ дан thibpat 17 January 2019 в 15:59
поделиться

Вам необходимо

  • назначить обработчик щелчков
  • предотвращать дефолт, чтобы остановить ссылку
  • получить путь и поиск
  • кодировать его [ 117]

$('a').on('click',function(e) {
  e.preventDefault(); // stop the link
  var newUrl = "https://test.xyz/?q="+encodeURIComponent(this.pathname+this.search); 
  console.log(newUrl); // delete this and uncomment next line
  // window.location=newUrl;
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<a href="https://example.com/post/1">link 1</a>
<a href="https://example.com/post/1?bla=bla1">link 2</a>

0
ответ дан mplungjan 17 January 2019 в 15:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: