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>
(我用了一個按鈕,因爲你所得到的是不是去任何地方的鏈接,您可以設置樣式看起來像一個鏈接,而不是一個按鈕,如果你願意,。但最好不要鏈接,如果沒有鏈接的正常可用性,如中間點擊或右鍵單擊書籤有任何意義。)
嘗試用'\'替換它並查看會發生什麼。可能你有一個輸出過濾器,它正在解碼實體,所以它被還原爲一個char字符。 – 2011-06-02 19:04:03