Javascript IE中window.location.href的异常行为
我有一个url作为一个值存储在无线电输入元素中。当用户选择其中一个元素时,它会运行一个函数将它们发送到给定的url。代码读取elements value属性,然后在将其分配给window.location.href之前对其运行encodeURI JavascriptJavascript IE中window.location.href的异常行为,javascript,html,internet-explorer,Javascript,Html,Internet Explorer,我有一个url作为一个值存储在无线电输入元素中。当用户选择其中一个元素时,它会运行一个函数将它们发送到给定的url。代码读取elements value属性,然后在将其分配给window.location.href之前对其运行encodeURI Javascript function go(e){ window.location.href=encodeURI(e.value); } HTML 然后,当打印出来或在页面上发出警报时,它会正确显示。但是,当它被传递到window.locatio
function go(e){
window.location.href=encodeURI(e.value);
}
HTML
然后,当打印出来或在页面上发出警报时,它会正确显示。但是,当它被传递到window.location.href时,它再次将<解释为小于符号
如果将属性中的字符串转义为
https://site.othersite.com/login.aspx?client=cname&amp;LT=P
然后,它似乎在IE中正常工作,但在其他浏览器中会产生不正确的结果
所有IE测试均在IE 9上完成
知道正确的处理方法是什么吗?尝试将您的值设置为您正在传递的参数
<input type="radio" onclick="go(this)" name="first" value="client=cname&LT=P" >
输出:
https://site.othersite.com/login.aspx?client%3Dcname%26LT%3DP
您不应该使用encodeURI 您的代码应该是:
function go(elem){
window.location.href = elem.value;
}
如果您只是向querystring添加一个值,那么您将需要使用它
function go(elem){
window.location.href = "http://www.example.com/foo/?redirect=" + encodeURIComponent(elem.value);
}
如果只将url分配给.href,而不使用encodeURI?encodeURIe.value;是错误的…公平地说,encodeURI是在试图找到解决问题的方法后添加的。我观察到同样的行为,不管它的存在。这是公平的,事实上,这是我在开始寻求帮助之前的方式。删除它会产生相同的结果。这将不起作用,因为域可能会在链接之间更改。
https://site.othersite.com/login.aspx?client%3Dcname%26LT%3DP
function go(elem){
window.location.href = elem.value;
}
function go(elem){
window.location.href = "http://www.example.com/foo/?redirect=" + encodeURIComponent(elem.value);
}