如何逃避内联样式的引号?

时间:2011-03-18 13:51:21

标签: html css xml escaping markup

如果我有一个内联样式表,可以和我想要 - 出于一些奇怪的原因 - 使用你用来封装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)请求包含“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;而不是"

所以要么我们都错了,要么网络浏览器不尊重任何标准?

4 个答案:

答案 0 :(得分:16)

使用单引号,我认为它应该是圆括号:

<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>

答案 1 :(得分:4)

首先,为什么?

您应该使用()代替“{}”

这种方式最好:

<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之后的空格。

答案 2 :(得分:3)

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

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

要在HTML中转义双引号,请使用&quot;,无论是否属性。

请参阅此jsfiddle(取自this SO回答)。

答案 3 :(得分:0)

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

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

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

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

并且可以嵌套更多

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

 style="background-image: url( ' {% static "image.jpg"   %}' ); "