如何在不使用javascript解码的情况下从window.location.href
获取网页网址?
例如,我们无法准确获取此网址:http://example.com/report#title=example_report&url=project_chart%2F%3Fproject_id%3D77
。
当我们在javascript中使用window.location.href
时,我们会获得此网址:
http://example.com/report#title=example_report&url=project_chart/?project_id=77
。
但我希望获得完全相同的真实网址。
任何解决方案?
正如@Eugenio所说,$(document)[0].URL
工作正常,但它安全吗?!
答案 0 :(得分:2)
尝试使用encodeURI
。
例如;
var url = window.location.href;
var originalUrl = encodeURI(url);
此函数(encodeURI
)对特殊字符进行编码,
除了: , / ? :@& = + $#
您可以使用encodeURIComponent()
对这些字符进行编码。
答案 1 :(得分:2)
您可以使用encodeURIComponent
,但必须获取要编码的字符串部分。
encodeURIComponent(window.location.href.split('&url=')[1])
或者您可以使用RegExp更精确。
答案 2 :(得分:1)
我使用下面的代码,它工作正常:
var url = $(document)[0].URL;
答案 3 :(得分:1)
为了做出清晰简洁的答案,我将总结所有评论。
对于您的问题,最佳解决方案是使用document[x].url
,其中x是您要使用的网址部分的索引。
window.location.href
和document.url
之间问题的主要区别在于,最后一个为您提供字符串格式的URL,而另一个则返回已解析的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的参数。无论如何,希望这有帮助。干杯!