Как получить значение из одного из нескольких возможных параметров URL? - PullRequest
1 голос
/ 04 апреля 2019

Я хочу получить значения из параметров URL, но параметры не являются постоянными: это может быть " referer = " или " utm_source = " или " source = ".

Я могу получить значение с помощью

url.searchParams.get("referer");

Полный скрипт на данный момент:

function() {
var url_string = window.location.href;
var url = new URL(url_string);
var ref = url.searchParams.get("referer");

if (ref == undefined) {
 return "No Referer";
} else {
  return ref; 
}
}

Могу ли я включить некоторые регулярные выражения, такие как:

var ref = url.searchParams.get.match(/referer|source|utm\_source/g);

Ответы [ 2 ]

3 голосов
/ 04 апреля 2019

Могу ли я включить некоторые регулярные выражения

Нет.Это не является функцией get.

. Вы можете использовать набор || s:

var ref = url.searchParams.get("referer") || url.searchParams.get("source") || url.searchParams.get("utm_source");

или взять массив имен ключей, сопоставить их со значениямив URL отфильтруйте все, у которых нет значения, а затем извлеките первое (и предположительно только) значение из массива.

var possible_key_names = ["referer", "source", "utm_source"];
var ref = possible_key_names
    .map(name => url.searchParams.get(name))
    .filter(value => !!value)
    .shift();
1 голос
/ 04 апреля 2019

Вы можете зацикливаться на searchParams примерно так:

var url = new URL("https://example.com/page?referer=&utm_source=google");
var value;
for (var [key, val] of url.searchParams) {
  if (key.match(/^(referer|source|utm_source)$/) && val !== "") {
    value = val;
    break;
  }
}
console.log(value);
...