如何阻止Internet Explorer重写我的文本?

时间:2011-04-11 15:12:21

标签: php javascript internet-explorer

我有一个包含url的javascript变量,通过从php输出脚本标记来填充。目的是在某些情况下将网页更改为该网址。

var url = "/somepage?q=3&region=1";

问题是网址包含序列“& reg”,Internet Explorer在没有被询问的情况下更改为“®”。

我尝试使用htmlspecialchars转义整个网址,这打破了其他浏览器。关闭怪癖模式可能有所帮助,但它不是当前系统的选项。添加到脚本标记没有做任何事情。

编辑: 我找到了一个解决方案,用连接“转义”网址。

var url = '<?php implode( "&'+'", explode( '&', '/somepage?q=3&region=1' ) ); ?>';

我也意识到我应该提一下如何更改页面:

document.location.href = url;

编辑: 结果我的脚本标签出错了。显示相同“问题”的最小示例:

<script type="text/javascript" />
    var url = "/test?mode=preview®ion=1";
</script>

自动关闭开始标记在这里很重要。

1 个答案:

答案 0 :(得分:4)

应为var url = "/somepage?q=3&amp;region=1";

始终在URL中使用&amp;,以便浏览器将此理解为查询分隔符并且不认为它引用某些htmlentity(此处的问题是IE并不关心分号是否存在并假设{ {1}}应为&reg

编辑:在我回答之后添加了真实的上下文,正如问题本身和评论中所指出的,如果您打算使用变量来重定向某些&reg;,则不应使用&amp; }

但是,既然我们手头有PHP,如果javascript重定向不是其他复杂脚本的一部分,我建议使用这样的PHP代码:

window.location