這不會發生在Chrome上,但至少在FF和MS Edge上會發生。 在FF中,當您嘗試在CSS url()
或object
標記內繪製svg時,如果svg包含像#FF0000
這樣的#hex顏色,它將會崩潰。讓我告訴你一個例子:Firefox在閱讀時拋出錯誤內聯SVG中的#hex顏色代碼
<p>Not using # colors</p>
<object type="image/svg+xml" data="data:image/svg+xml;charset=UTF-8,<?xml version='1.0' encoding='utf-8'?><svg version='1.2' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' width='70px' height='70px' viewBox='0 0 100 100' xml:space='preserve'><circle fill='red' cx='50' cy='54.7' r='15.72'/></svg>">
No SVG UTF8
</object>
<p>Using #hex colors (won't show on FF)</p>
<object type="image/svg+xml" data="data:image/svg+xml;charset=UTF-8,<?xml version='1.0' encoding='utf-8'?><svg version='1.2' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' width='70px' height='70px' viewBox='0 0 100 100' xml:space='preserve'><circle fill='#FF0000' cx='50' cy='54.7' r='15.72'/></svg>">
No SVG UTF8
</object>
它爲什麼會發生? SVG中有沒有其他方法可以編寫這些顏色?
這是因爲'#'是URI方案中的一個特殊字符,它需要進行編碼。爲此,在JavaScript中,可以使用'encodeURIComponent(yourString)'方法。 – Kaiido
@Kaiido其實修復了這個問題,但這很奇怪,因爲例如空格不需要編碼......爲什麼#會這樣做?只在非webkit瀏覽器上...?奇怪! – Vandervals
不,這並不奇怪,''用作URI方案中的分片分隔符,空格不是。 – Kaiido