Добавление параметра в URL с помощью javascript

Я пытаюсь добавить параметр "реферер=" к своему URL-адресу, соответствующему рефереру трафика нового сеанса.

Я использовал часть кода из Эта тема... но он постоянно перезагружает страницу... тогда URL выглядит так:

https://example.com?refere=facebookreferer=facebookreferer=facebook

Примечание:

Я использовал это решение 1:

function addOrUpdateUrlParam(name, value)

{
  var ref = document.referrer;
  var refsplit = ref.split(".")[1];
  var href = window.location.href;
  var regex = new RegExp("[&\\?]" + name + " = ");
  if (regex.test(href))
  {
    regex = new RegExp("([&\\?])" + name + "=\\d+");
  {

  else
  {
    if (href.indexOf("?") > -1)
      window.location.href = href + "&" + name + " = " + value;
    else
      window.location.href = href + "?" + name + " = " + value;
  }
  if (refsplit != "example") {
  return addOrUpdateUrlParam("referer", refsplit);
}
}

И это решение 2:

function () {
  var ref = document.referrer;
  var refsplit = ref.split(".")[1];
  if (refsplit != "example") {
return location.search += "referer = " + refsplit;
}
}

Изменить 1: Благодаря Прасант я улучшил код до:

function  () {
  var ref = document.referrer;
  var refsplit = ref.split(".")[1];
  var currentUrl = location.href;
  var url1 = currentUrl += "?referer = "+refsplit;
  var url2 = currentUrl += "&referer = "+refsplit;

   if (currentUrl.indexOf("?") < 0) {
    return window.location = url1;
   } else {
    return window.location = url2;
   }
}

Однако он возвращает оба условия:

https://example.com/?referer=facebook&referer=facebook

Редактировать 2: Итак, после многих попыток я добился этого, работая с параметрами URL-адреса (местоположение.поиск) вместо полного URL-адреса (location.href):

function addRefererParam () {
var ref = document.referrer;  //Get Referrer
var refDomain = ref.match(/[^(?:http://|www\.|https://)]([^/]+)/i)[0]; //Extract Referrer Domain name for better readability
var params = location.search; //Get Url parameters

  if (refDomain.match(/mydomain|null|undefined/i)) { //check if domain not null or own domain. 
    return params ;
} else {
    return params += "utm_source = " + refDomain; //create new query string with referrer domain
}
}

Однако это не создает постоянную строку запроса при просмотре... как я могу сделать новые параметры постоянными?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
6 553
2

Ответы 2

Получите URL-адрес текущего окна и после имени домена просто соедините свой URL-адрес с &referer=значение.

var currentUrl = location.href;
var paramsInUrl = currentUrl.split('&');
var flag = true;
for(var i in paramsInUrl)
{
    if (!paramsInUrl[i].includes('referer=')
    {
        continue;
    }
    else
    {
        flag = false;
        break;
    }
}
if (flag)
{
    currentUrl += '&referer='+value;
    window.location = currentUrl; 
}

Это почти работает... на самом деле, иногда текущий URL-адрес еще не имеет какого-либо параметра... поэтому я изменил его с помощью... но он добавляет оба условия, например: example.com/&referer=facebook?referer=facebook

B4b4j1 11.02.2019 13:47

Сохраните URL-адрес в переменной и разделите его с помощью &. Теперь у вас будут все параметры вместе со значением в массиве. Преобразуйте массив в строку, используя метод toString(). теперь проверьте (!if (parameters.includes("referer)). Если это условие возвращает true, вставьте мой ответ под оператором if

Prasanth Ganesan 11.02.2019 14:12

Спасибо... Выглядит отлично, и я почти уверен, что это должно работать... но сайт продолжает зацикливать параметр, и я не знаю, почему:

B4b4j1 11.02.2019 18:09

Возможно проблема на стороне сервера. Этот код отправит запрос GET на сервер, и если вы не обрабатывали запросы на получение на стороне сервера, могут возникнуть проблемы. Попробуйте отправить запрос на сервер от почтальона и проверьте, правильно ли он проходит. Если все прошло нормально, прокомментируйте полученный код состояния.

Prasanth Ganesan 12.02.2019 06:25

Если это сработало, отметьте мой ответ как проверенный. Тай

Prasanth Ganesan 14.02.2019 07:56

Что бы это ни стоило (поскольку более общий вопрос о том, как это сделать, как правило, привел меня к этому сообщению), я сделал 178-байтовую вспомогательную функцию, которая принимает объект параметров запроса, которые вы хотите добавить к URL для запроса GET (в формате, аналогичном тому, как вы можете добавлять заголовки к запросу) и сделал для него пакет npm здесь: https://www.npmjs.com/package/add-query-params-to-url

Надеюсь, это будет полезно для некоторых.

Другие вопросы по теме