Как получить URL страницы без декодирования в JavaScript?

Как я могу получить URL страницы от window.location.href без декодирования в JavaScript?

Например, мы не можем получить именно этот URL: http://example.com/report#title=example_report&url=project_chart%2F%3Fproject_id%3D77,

Когда мы используем window.location.href в javascript мы получим этот URL:

http://example.com/report#title=example_report&url=project_chart/?project_id=77,

Но я хочу получить точно такой же реальный URL.

Любое решение?

отредактированный

как сказал @Eugenio, $(document)[0].URL работает нормально, но безопасно ли это?!

4 ответа

Решение

Просто чтобы дать четкий и краткий ответ, я подведу итоги всех комментариев.

Для вашей проблемы лучшее решение - использовать document[x].url где x - это индекс части URL, которую вы хотите использовать.

Основное отличие вашей проблемы между window.location.href а также document.url является то, что последний дает вам URL в строковом формате, в то время как другой возвращает уже проанализированный URL.

Использование любого из них абсолютно нормально и безопасно и широко распространено во всех современных браузерах.

var url1 = document.URL;
var url2 = window.location.href;

document.getElementById("documentUrl").append (url1);
document.getElementById("windowLocationUrl").append (url2);
<div id="documentUrl">document.url: </div>
<div id="windowLocationUrl">window.location.href: </div>

В этом конкретном примере фрагмента нет никаких отличий, поскольку к URL-адресу нет параметров. В любом случае, надеюсь, это помогло. Ура!

Попробуй использовать encodeURI,

Как например;

var url = window.location.href;
var originalUrl = encodeURI(url);

Эта функция (encodeURI) кодирует специальные символы, кроме:, /?: @ & = + $ #

Ты можешь использовать encodeURIComponent() кодировать эти символы.

Ты можешь использовать encodeURIComponent, но вы должны получить часть строки, которую хотите кодировать.

encodeURIComponent(window.location.href.split('&url=')[1])

Или вы можете использовать RegExp, чтобы быть более точным.

Как сказал @Eugenio, я использую приведенный ниже код, и он отлично работает:

var url = $(document)[0].URL;
Другие вопросы по тегам