我有一个包含url的javascript变量,通过从php输出脚本标记来填充。目的是在某些情况下将网页更改为该网址。
var url = "/somepage?q=3®ion=1";
问题是网址包含序列“& reg”,Internet Explorer在没有被询问的情况下更改为“®”。
我尝试使用htmlspecialchars转义整个网址,这打破了其他浏览器。关闭怪癖模式可能有所帮助,但它不是当前系统的选项。添加到脚本标记没有做任何事情。
编辑: 我找到了一个解决方案,用连接“转义”网址。
var url = '<?php implode( "&'+'", explode( '&', '/somepage?q=3®ion=1' ) ); ?>';
我也意识到我应该提一下如何更改页面:
document.location.href = url;
编辑: 结果我的脚本标签出错了。显示相同“问题”的最小示例:
<script type="text/javascript" />
var url = "/test?mode=preview®ion=1";
</script>
自动关闭开始标记在这里很重要。
答案 0 :(得分:4)
应为var url = "/somepage?q=3&region=1";
始终在URL中使用&
,以便浏览器将此理解为查询分隔符并且不认为它引用某些htmlentity(此处的问题是IE并不关心分号是否存在并假设{ {1}}应为®
)
®
,则不应使用&
}
但是,既然我们手头有PHP,如果javascript重定向不是其他复杂脚本的一部分,我建议使用这样的PHP代码:
window.location