Javascript或浏览器以不同的方式设置位置

Javascript or the Browser sets the location differently

本文关键字:方式 设置 位置 浏览器 Javascript      更新时间:2023-09-26

我有一个Angularjs应用程序,可以在表格中生成自动建议。表中的每个项目都有一个附加的URL(通过Angularjs模板)。如果我启动自动建议并用鼠标选择一个链接,它可以正常工作,转到像 domain.com/#/samples/sampleName.html 这样的 URL(我知道这在使用 Angular 方面有点奇怪,但相信我,这样做有奇怪的 SEO 原因——客户的原因,不是我的原因。

如果您单击链接(用鼠标)就可以了。如果您通过使用浏览器工具在页面源代码中检查链接来单击链接,则它工作正常。但是,这段 javascript 代码(允许某人使用箭头键浏览自动建议列表并按 Enter 键也应该转到该页面。

selectedURL = $('#autosuggest').children().attr('href');
alert('You selected ' + selectedURL);
location = selectedURL;

警报显示格式正确的 URL。但是,当设置位置时,我会得到这样的东西domain.com/#%2Fsamples%2FsampleName.html当这种情况发生时,浏览器(正确地)什么也不做。为什么这两种方法(单击和设置位置对象)对 URL 的编码方式不同?

我不确定为什么其他方法(单击)有效。我猜你用不同的代码处理它们。不过,这样做应该可以解决问题:

location = decodeURIComponent(selectedURL);