Я хочу извлечь домен с помощью хэша без длинного случайного идентификатора из адресной строки местоположения, чтобы он отображался следующим образом:

http://test.example.com/#inbox

Вот полный URL:

http://test.example.com/#inbox/U2FsdGVkX19stSSdMXLZq5v7bOgzRLtaM7Lr1t+lWpI=

Вот что я пробовал до сих пор:

var url = location.hash.split('#inbox')[1];

И я также попробовал это:

var url = $(location).attr("href").split('/')[2];

К сожалению, я не получил то, что я хочу, чтобы извлечь домен и хэш без длинного случайного идентификатора.

Когда я пытаюсь это сделать, он извлекает имя домена и хэш без случайного идентификатора, чтобы получить возвращаемый результат для URL, например http://test.example.com/#inbox.

1
Robert Jones 3 Май 2019 в 02:34

3 ответа

Лучший ответ

Я получил весь URL, нашел, где находится «#», добавил 6 к его счету для «#» + слово «входящие» и удалил оставшуюся часть URL:

var url = document.URL;
var i = url.indexOf('#') + 6; // 6 is length of "#" + the word "inbox"
var answer = url.substr(0, i);
0
Peter Mortensen 19 Май 2019 в 18:46

Попробуйте следующий код:

// Complete URL
var url = 'http://test.example.com/#inbox/U2FsdGVkX19stSSdMXLZq5v7bOgzRLtaM7Lr1t+lWpI=';

var desiredResult = url.match(/.*\/\#inbox\//)[0];
console.log(desiredResult.substring(0, desiredResult.length - 1)); // this will output 'http://test.example.com/#inbox'
-2
Peter Mortensen 19 Май 2019 в 18:54

Я бы использовал indexOf(), чтобы найти положение символа '#'. Поскольку URL не может содержать '#', можно предположить, что первым '#' будет тот, который вас интересует.

Затем я буду искать '/', опять же с indexOf(), так что слово между '#' и '/' может измениться, и все будет работать так, как ожидалось.

Эта позиция является местоположением '/', и все, что до этого может быть возвращено, это то, что делает функция String.sub(), и она возвращает тот URL, который вы ищете:

var pos = location.href.indexOf('#')
pos = location.href.indexOf('/', pos)
var url = location.href.substr(0, pos)

Другой способ, хотя я не уверен, является ли он полностью переносимым, - использовать поля местоположения следующим образом:

var url = location.origin + location.pathname + "#inbox"

Если часть "#inbox" может измениться, вы можете изменить код или искать косую черту в location.hash следующим образом:

var pos = location.hash.indexOf('/')
var url = location.origin + location.pathname + location.hash.sub(0, pos)

В любом случае, любой путь должен быть достаточно быстрым (тем более, что вам не нужно обходить такие циклы).

2
Peter Mortensen 19 Май 2019 в 18:52