如何在javascript中获取没有解码的页面网址?

时间:2018-03-14 15:45:51

标签: javascript encoding url-encoding urldecode

如何在不使用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工作正常,但它安全吗?!

4 个答案:

答案 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)

@Eugenio告诉,

我使用下面的代码,它工作正常:

var url = $(document)[0].URL;

答案 3 :(得分:1)

为了做出清晰简洁的答案,我将总结所有评论。

对于您的问题,最佳解决方案是使用document[x].url,其中x是您要使用的网址部分的索引。

window.location.hrefdocument.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的参数。无论如何,希望这有帮助。干杯!