首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置JavaScript window.location

设置JavaScript window.location
EN

Stack Overflow用户
提问于 2010-09-05 00:14:56
回答 3查看 94.9K关注 0票数 45

我当前正在设置window.location.pathname属性,以将用户重定向到相对的URL。新的URL有参数,所以JavaScript行看起来像这样:

代码语言:javascript
复制
window.location.pathname = window.location.pathname.substring( 0, window.location.pathname.lastIndexOf( '/' ) + 1 ) + 'myPage.xhtml?u=' + selected_user.Username;

这在Firefox中是成功的,但是Chrome用'%3F‘编码问号,请求随后失败。

我不确定我是否正确地使用了window.location。我是否需要使用window.location的属性,如路径名或href?我发现,一旦我设置了一个属性,location就会被重新加载,因此,例如,search和pathname属性不能单独设置。可以直接设置window.location吗?我只需要用一个参数设置一个相对URL。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-09-05 03:22:04

pathnamelocation的许多其他属性和链接只反映了URL的一部分:

代码语言:javascript
复制
http:  //www.example.com/path/to/example.html?param1=2&param3=4#fragment
^protocol^hostname      ^pathname            ^search           ^hash

正如您所看到的,URL的?...部分不是pathname的一部分;将包含?的值写入location.pathname是没有意义的,因为URL的该部分不能包含问号。Chrome正在纠正你的错误,将字符编码成一个表示文字问号的序列,这不会终止pathname

这些属性非常适合将URL拆分成它们的组成部分供您处理,但在这种情况下,您可能不想写入这些属性。相反,请写入location.href。这代表了整个URL,但编写一个相对URL到它是非常好的;这将相对于当前值计算出来,所以实际上根本不需要读取和拆分pathname

代码语言:javascript
复制
location.href= 'myPage.xhtml?u='+encodeURIComponent(selected_user.Username);

注意URL编码。如果用户名可以包含字母数字以外的字符,您可能需要这样做才能阻止这些字符破坏参数。在将任意字符串放入URL的一部分之前,始终对其进行URL编码。

票数 64
EN

Stack Overflow用户

发布于 2010-09-05 00:18:15

请尝试设置location.href属性而不是window.location.pathname属性。

票数 14
EN

Stack Overflow用户

发布于 2010-09-05 00:19:15

使用window.location.href被认为是设置网址的最安全的方式。我认为这应该可以解决编码问题。

代码语言:javascript
复制
window.location.href = window.location.pathname.substring( 0, window.location.pathname.lastIndexOf( '/' ) + 1 ) + 'myPage.xhtml?u=' + selected_user.Username;

如果还不能解决问题,请提供一个示例URL。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3643041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档