在JavaScript中使用window.open()
时,href的正确跨浏览器编码是什么?首先我使用
var href = "http://127.0.0.1:8000/etf/admin/escola/t34atividade/?pop=1©=1";
var win = window.open(href, name, 'height=500,width=800,resizable=yes,scrollbars=yes');
IE8打开:http://127.0.0.1:8000/etf/admin/escola/t34atividade/?pop=1©=1
FireFox打开:http://127.0.0.1:8000/etf/admin/escola/t34atividade/?pop=1©=1
var href = "http://127.0.0.1:8000/etf/admin/escola/t34atividade/?pop=1&copy=1";
var win = window.open(href, name, 'height=500,width=800,resizable=yes,scrollbars=yes');
IE8打开:http://127.0.0.1:8000/etf/admin/escola/t34atividade/?pop=1©=1
FireFox打开:http://127.0.0.1:8000/etf/admin/escola/t34atividade/?pop=1&copy=1
答案 0 :(得分:2)
对于不部分URI语法的URI的每一段使用Javascript“encodeURIComponent”函数(即分隔符斜杠,查询字符串的问号,参数分隔符&符号等) )。
URI编码不与HTML转义相同。例如,您不会将URL中的&符号转义为&
。
答案 1 :(得分:1)
IE8似乎试图将查询字符串参数& copy = 1 强制转换为实体& copy; ,这是版权符号(©)。这实际上很有趣。就像微软用“帮助”来阻止用户一样。
Pointy对编码是正确的。还要注意你没有一个代码缩小器,它在一对双斜线(//)之后删除一行上的所有内容;我以前见过那些残骸页面。
答案 2 :(得分:0)
我找到的最简单的解决方案是停止使用copy
作为GET参数。问题是©
实际上是版权符号的HTML实体。 IE应用实体替换将其转换为符号,即使它是在JavaScript代码中。显然Firefox不执行实体替换。根据本博客中的评论,IE正在做的事情可能是正确的,但为了避免所有混乱我只是将我的参数重命名为clone
。
http://nedbatchelder.com/blog/200812/accidental_html_entities_in_urls.html