我有一个url存储为无线电输入元素中的值 . 当用户选择其中一个元素时,它会运行一个函数将它们发送到给定的URL . 代码读取元素值属性,然后在将其分配给window.location.href之前在其上运行encodeURI
使用Javascript
function go(e){
window.location.href=encodeURI(e.value);
}
HTML
<input type="radio" onclick="go(this)" name="first" value="https://site.othersite.com/login.aspx?client=cname<=P" >
这在Chrome和Firefox中正常工作,但不适用于IE . IE中发生的事情很奇怪 . 首先,浏览器首先将属性中的&LT解释为小于符号 . 这个它的自我并不太奇怪,因为它是一个小于符号的转义字符串 . 奇怪的是,如果它被转义为
https://site.othersite.com/login.aspx?client=cname&LT=P
然后在页面上打印或提醒时它会正确显示 . 但是当它传递给window.location.href时,它再次将&LT解释为小于符号 .
如果您将属性中的字符串转义为
https://site.othersite.com/login.aspx?client=cname&amp;LT=P
然后它似乎在IE中正常工作,但这会在其他浏览器中产生不正确的结果 .
所有IE测试都是在IE 9上完成的
知道处理这个问题的正确方法是什么?
2 回答
尝试将您的值设置为您传递的参数
然后将它作为encodedURIcomponent()附加到您的URL
输出:
你不应该使用encodeURI
你的代码应该只是:
如果你只是在一个查询字符串中添加一个值,那么你需要使用它 .