Mar*_*ark 42 javascript window.location
我目前正在设置window.location.pathname属性以将用户重定向到相对URL.新URL有参数,因此JavaScript行如下所示:
window.location.pathname = window.location.pathname.substring( 0, window.location.pathname.lastIndexOf( '/' ) + 1 ) + 'myPage.xhtml?u=' + selected_user.Username;
Run Code Online (Sandbox Code Playgroud)
这在Firefox中很成功,但Chrome使用'%3F'对问号进行编码,然后请求失败.
我不确定我是否正确使用window.location.我是否需要使用window.location的属性,例如pathname或href?我发现,只要我设置一个属性的位置被重新加载,因此,例如,搜索和路径属性不能单独设置.可以直接设置window.location吗?我只需要用参数设置相对URL.
bob*_*nce 60
pathname和location链接的许多其他属性仅反映URL的一部分:
http: //www.example.com/path/to/example.html?param1=2¶m3=4#fragment
^protocol^hostname ^pathname ^search ^hash
Run Code Online (Sandbox Code Playgroud)
如您所见,?...URL 的一部分不是pathname; 它是没有意义编写包含值?来location.pathname作为URL的一部分不能包含一个问号.Chrome正在通过将字符编码为序列来纠正您的错误,该序列意味着不会终止的文字问号pathname.
这些属性非常适合将URL分解为其组成部分以供您处理,但在这种情况下您可能不希望写入它们.相反,写信给location.href.这表示整个URL,但写一个相对URL是完全正常的; 这将相对于当前值计算出来,因此实际上根本不需要读取和拆分pathname:
location.href= 'myPage.xhtml?u='+encodeURIComponent(selected_user.Username);
Run Code Online (Sandbox Code Playgroud)
请注意URL编码.如果用户名可以包含字母数字以外的字符,您可能需要这个来阻止那些破坏参数的字符.在将任意字符串放入URL的一部分之前,始终对其进行URL编码.
Chr*_*nte 13
尝试设置location.href属性而不是window.location.pathname.
使用window.location.href被认为是设置 URL 的最安全方式.我认为这应该解决编码问题.
window.location.href = window.location.pathname.substring( 0, window.location.pathname.lastIndexOf( '/' ) + 1 ) + 'myPage.xhtml?u=' + selected_user.Username;
Run Code Online (Sandbox Code Playgroud)
如果这没有帮助,请显示示例网址.
| 归档时间: |
|
| 查看次数: |
85075 次 |
| 最近记录: |