&安培;代码javascript没有被&替换

时间:2016-03-14 19:22:21

标签: javascript replace

我的代码:

window.open("http://www.facebook.com/sharer.php?u="+urlToShare+"&"+"t="+"test","_blank", "width=700, height=400");

在生成的网址' & amp; '应该替换为' & ',对吧?但是,它并没有被替换。

2 个答案:

答案 0 :(得分:4)

没有

要在HTML文档中表示为数据的&应该(除了少数例外,例如在<script>内或在后跟空格时)表示为{{1} }。在解析HTML之后,浏览器会将其解释为&amp;

在这种情况下,您有JavaScript(不是HTML)和URL(也不是HTML),因此没有要解析的HTML,所以HTML解析规则会将&读作{{1不适用。

答案 1 :(得分:0)

不是HTML格式。任何地方都不允许Character references

  

在其他部分中描述的某些情况下,可能会混合使用文字   字符引用。

当HTML解析器finds a <script> tag时,它会将标记生成器切换为script data state

data state不同,脚本数据状态没有字符引用。

所以只需使用&代替&amp;

<!-- This is HTML -->
<script>
alert('&');
</script>

但是,在XHTML中需要&amp;,因为在XML中,解析器根据元素没有不同的行为。

<!-- This is XHTML -->
<script>
alert('&amp;');
</script>

但是在JS代码中使用&amp;是不可取的,因此您可以将代码包装在CDATA section

<!-- This is XHTML -->
<script><![CDATA[
alert('&');
]]></script>