【问题标题】:Ampersand encoding in url with a HTML style tag带有 HTML 样式标记的 url 中的 & 符号编码
【发布时间】:2017-03-26 11:37:47
【问题描述】:

我有以下 HTML 样式标签

<style>
    #loginBackground {
        background-image: url(https://somedomain.com/services/storage?id=89174&amp;type=picture&amp;secret=ucWEYqzpQk8QCaHHp3lfDy5vRrISWwUgzGLnWaDD&amp;timestamp=1478862301);
        background-size: cover;
        background-position: center center;
    }
</style>

Chrome 查询这个网址:https://somedomain.com/services/storage?id=89174&amp;amp;type=picture&amp;amp;secret=ucWEYqzpQk8QCaHHp3lfDy5vRrISWwUgzGLnWaDD&amp;amp;timestamp=1478862301 没有在&amp;amp; 中转入&amp;amp; 所以图片显示不正确。

文档 doctype 是 &lt;!DOCTYPE html&gt; 所以 HTML 5。

如果我不对这些 & 符号进行编码,一切正常,但根据此线程 what's the de facto practice on ampersand encoding in html,所有 & 符号都必须进行编码。

我尝试使用&amp;#38; 代替&amp;amp;,在url 周围使用双引号或单引号,但没有任何效果。

这是一个浏览器错误还是在这种情况下不应该对 & 符号进行编码?

【问题讨论】:

    标签: html css ampersand


    【解决方案1】:

    &lt;style&gt;(和&lt;script&gt;)元素被定义为(在 HTML 4 术语中)包含 CDATA。 (HTML 5 says the same thing,但不是很清楚)。

    这意味着标记的正常规则不适用并且实体不展开。

    如果您想在 &lt;style&gt; 元素中使用 & 字符,则必须使用文字 & 符号。

    【讨论】:

    • @arkascha — OP 观察 并询问它是否是浏览器错误或者是否不应该编码。这个答案清楚地表明它是 HTML 规范中定义的行为。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 2011-12-14
    • 2012-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多