这里的一小段代码来自购物车:
<a href="javascript:;" onclick="simpleCart.add( 'name=The Devil's Sneakers', 'price=10', 'shipping=0', 'quantity=1' );">Add To Cart</a>
Firebug的控制台显示:“缺少”参数列表后“。显然')'不会错过!但我怀疑它与转义的char
有关'
因为name =参数中没有撇号的其他类似格式的链接正常工作。
思想?
答案 0 :(得分:4)
onclick="simpleCart.add( 'name=The Devil's Sneakers'...
带有撇号的HTML属性是否在HTML级别进行了转义。这跟说:
完全一样onclick="simpleCart.add( 'name=The Devil's Sneakers'...
明显的问题是字符串过早关闭。 HTML转义对您没有帮助,因为HTML转义只需要对HTML特有的字符进行编码。这将包括双引号字符,但不包括单引号,因为您使用双引号来分隔属性值。
这里的撇号对HTML并不特殊,但它适用于JavaScript。你需要使用JavaScript字符串文字转义,在那种转义中你需要反斜杠:
onclick="simpleCart.add( 'name=The Devil\'s Sneakers'...
无论哪种方式,很明显其他转义中的转义确实令人困惑,这是不使用内联事件处理程序属性的另一个好理由。相反,在纯JavaScript中:
<button type="button" id="foo">Add to cart</button>
<script type="text/javascript">
document.getElementById('foo').onclick = function() {
simpleCart.add("name=The Devil's Sneakers", 'price=10', 'shipping=0', 'quantity=1');
};
</script>
(我使用了一个按钮,因为你所拥有的并不是一个随处可见的链接。如果你愿意的话,你可以把它设计成一个链接而不是一个按钮,但如果没有,最好不要有链接链接的正常可供性,如中键或右键单击书签是有意义的。)
答案 1 :(得分:0)
使用\ x27转义撇号。这段代码应该有效:
<a href="javascript:;" onclick="simpleCart.add( 'name=The Devil\x27s Sneakers', 'price=10', 'shipping=0', 'quantity=1' );">Add To Cart</a>
答案 2 :(得分:0)
尝试\'代替'
效果很好。
<html>
<body>
<a href="javascript:;" onclick="alert('The Devil\'s Sneakers');">Add To Cart</a>
<a href="javascript:;" onclick="alert('The Devil\'s Sneakers');">Add To Cart</a>
</body>
</html>