Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript IE中window.location.href的异常行为_Javascript_Html_Internet Explorer - Fatal编程技术网

Javascript IE中window.location.href的异常行为

Javascript 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

我有一个url作为一个值存储在无线电输入元素中。当用户选择其中一个元素时,它会运行一个函数将它们发送到给定的url。代码读取elements value属性,然后在将其分配给window.location.href之前对其运行encodeURI

Javascript

function go(e){
  window.location.href=encodeURI(e.value);
}
HTML

然后,当打印出来或在页面上发出警报时,它会正确显示。但是,当它被传递到window.location.href时,它再次将<解释为小于符号

如果将属性中的字符串转义为

https://site.othersite.com/login.aspx?client=cname&amp;amp;LT=P
然后,它似乎在IE中正常工作,但在其他浏览器中会产生不正确的结果

所有IE测试均在IE 9上完成


知道正确的处理方法是什么吗?

尝试将您的值设置为您正在传递的参数

<input type="radio" onclick="go(this)" name="first" value="client=cname&amp;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); 
}