我在<pre>
标记中呈现这行代码,在屏幕上显示为普通文字:
<img src="http://maps.googleapis.com/maps/api/staticmap?zoom=7&size=700x540&sensor=false$center=London, England&markers=London, England|Leicester, England|">
然而,它在多个浏览器中被误解为:
<img src="http://maps.googleapis.com/maps/api/staticmap?zoom=7&size=700x540&sensor=false¢er=London, England&markers=London, England|Leicester, England|">
由于分号符号的转义码是¢
而不是¢
,我无法理解为什么会发生这种情况,似乎没有办法阻止它。有人可以帮忙吗?
另外,我的doctype:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
如果它有任何区别,这行代码将通过Javascript的innerHTML方法添加到文档中。
答案 0 :(得分:1)
仅仅因为<pre>
中的某些内容并不意味着你不必逃避它(doctype在这里没有区别)。如果您希望&
显示在屏幕上,&
的任何实例都应使用实体&
。你有时可以摆脱它,但这只是浏览器的宽容 - 你不应该利用它。如果识别出一个实体,浏览器可能会尝试转换为实体,即使分号丢失(再次原谅)。
整个事情(来源)应该是:
<pre><img src="http://maps.googleapis.com/maps/api/staticmap?zoom=7&size=700x540&sensor=false&center=London, England&markers=London, England|Leicester, England|"></pre>
顺便说一下,对于属性值也是如此,例如href
。人们常常“懒惰”而不是逃避查询字符串中的&符号,但你真的应该这样做。