如何在 javascript 中不解码就获取页面 url?
how to get page url without decode in javascript?
如何在 javascript 中不解码的情况下从 window.location.href
获取页面 URL?
例如我们不能得到这个 URL: http://example.com/report#title=example_report&url=project_chart%2F%3Fproject_id%3D77
.
当我们在 javascript 中使用 window.location.href
时,我们会得到这个 URL:
http://example.com/report#title=example_report&url=project_chart/?project_id=77
。
但我想得到一模一样的真实URL。
有什么解决办法吗?
已编辑
正如@Eugenio 所说,$(document)[0].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;
为了做出清晰简洁的回答,我将总结所有评论。
对于您的问题,最好的解决方案是使用 document[x].url
,其中 x 是您要使用的 URL 部分的索引。
window.location.href
和 document.url
之间的问题的主要区别在于,最后一个以字符串格式为您提供 URL,而另一个 return URL 已经解析。
使用任何一种都是完全正常和安全的,并且 widely adopted in all modern browsers。
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 没有附加参数。无论如何,希望这有所帮助。干杯!
如何在 javascript 中不解码的情况下从 window.location.href
获取页面 URL?
例如我们不能得到这个 URL: http://example.com/report#title=example_report&url=project_chart%2F%3Fproject_id%3D77
.
当我们在 javascript 中使用 window.location.href
时,我们会得到这个 URL:
http://example.com/report#title=example_report&url=project_chart/?project_id=77
。
但我想得到一模一样的真实URL。
有什么解决办法吗?
已编辑
正如@Eugenio 所说,$(document)[0].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;
为了做出清晰简洁的回答,我将总结所有评论。
对于您的问题,最好的解决方案是使用 document[x].url
,其中 x 是您要使用的 URL 部分的索引。
window.location.href
和 document.url
之间的问题的主要区别在于,最后一个以字符串格式为您提供 URL,而另一个 return URL 已经解析。
使用任何一种都是完全正常和安全的,并且 widely adopted in all modern browsers。
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 没有附加参数。无论如何,希望这有所帮助。干杯!