如何转义内联样式中的引号?

问题描述 投票:0回答:4

如果我有一个内联样式表,我可以并且我想要 - 出于某种奇怪的原因 - 使用相同的引号将属性值封装在 css 中的 html 代码中。

其中一个是正确的吗?

<div style="background: url(\"http://my-url.com/img.jpg\")"></div>


<div style="background: url(&quot;http://my-url.com/img.jpg&quot;)"></div>

我认为第一个是正确的,第二个是废话。我对不对,为什么?

编辑:

一位同事用第二种方式写的,问题是某些浏览器(包括但不一定限于 Internet Explorer 6+7+8)请求的 url 包括导致 404 请求的 " 标志。

编辑2:

好吧,现在真的很奇怪。这是从我们的文件中复制和粘贴的原始代码。

<div class="cover" style="background-image: url(&quot;http://www.flimmit.com/media/search/filmcovers/105x152/ka/false/kf/false/F7780E.jpg&quot;);">

这是直接来自我们的错误日志:

13:09:45 (0.2424) [header] requ_uri        /schauspieler/Kelly+Trump/"http:/www.flimmit.com/media/search/filmcovers/105x152/ka/false/kf/false/F6TYO8.jpg"
Mar 18 13:09:45 (0.0001) [header] server_addr     10.48.195.172
Mar 18 13:09:45 (0.0001) [header] http_user_agent Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; GTB6.6; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; eSobiSubscriber 2.0.4.16; .NET CLR 3.5.30729; .NET CLR 3.0.30729; .NET4.0C; AskTbFF/5.9.1.14019)
Mar 18 13:09:45 (0.0001) [error] 404-Seite wurde aufgerufen
Mar 18 13:09:45 (0.0386) [header] remote_ip       212.95.7.69 - AT
Mar 18 13:09:45 (0.0001) [header] visitor_id      4095543, -
Mar 18 13:09:45 (0.0001) [header] requ_url        http://www.flimmit.com/schauspieler/Kelly+Trump/"http:/www.flimmit.com/media/search/filmcovers/105x152/ka/false/kf/false/F6TYO8.jpg"
Mar 18 13:09:45 (0.0001) [header] http_referer    http://www.flimmit.com/schauspieler/Kelly+Trump/
Mar 18 13:09:45 (0.0000) [header] finished at 0.2816

这是一个 IE8 客户端。在 IE6 上,请求 uri 甚至有

&quot;
而不是
"

所以要么我们都错了,要么 Internet Explorer 不遵守任何标准?

html css xml escaping markup
4个回答
31
投票

使用单引号我觉得应该是圆括号:

<div style="background: url('http://my-url.com/img.jpg')"></div>

&quot;
也有效(在 jsFiddle 中测试):

<div style="background: url(&quot;http://my-url.com/img.jpg&quot;)">test</div>

5
投票

首先,为什么?

你应该使用

()
而不是 '{}'

这样最好:

<div style="background: url('http://my-url.com/img.jpg')"></div>

这样就好了:

<div style="background: url(&quot;http://my-url.com/img.jpg&quot;)"></div>

这也有效:

<div style="background: url(http://my-url.com/img.jpg)"></div>

这行不通:

<div style="background: url(\"http://my-url.com/img.jpg\")"></div>

注:去掉

url
.

后面的空格

5
投票

就转义而言,第二个选项是正确的:

<div style="background: url(&quot;https://my-url.com/img.jpg&quot;)"></div>

要在 HTML 中转义双引号,您可以使用

&quot;
,无论是否在属性中。

看到这个jsfiddle(取自this SO answer)。


2
投票

如果要使用多个双引号和单引号

您可以将双引号和单引号组合在一起(嵌套)

style="background-image: url( 'image.jpg' );"

style='background-image: url( "image.jpg" );'

可用于更多嵌套

喜欢(如果你使用框架模板(Django))

 style="background-image: url( ' {% static "image.jpg"   %}' ); "
© www.soinside.com 2019 - 2024. All rights reserved.