4

我正在使用CSS3Pie在使用无效 CSS 属性的 IE 中制作圆角

behavior: url(/PIE.htc);

如果我在我的主 CSS 中保留这个声明,其他浏览器是否会加载这个 .htc 文件,即使他们不需要这个文件,或者只有 IE 会加载这个文件?

在性能方面保持behavior: url(/PIE.htc);单独的 IE 条件样式表有什么好处吗?

<!--[if lt IE 9]>
        <link rel="stylesheet" type="text/css" href="ie8-and-down.css" />
<![endif]-->

整个代码是这样的

border: 1px solid #696;
padding: 60px 0;
text-align: center; width: 200px;
-webkit-border-radius: 8px;
-moz-border-radius: 8px;
border-radius: 8px;
background: #EEFF99;
behavior: url(/PIE.htc);
4

3 回答 3

11

该规范说,浏览器将完全忽略其属性名称无法识别的声明。这意味着,从理论上讲,由于behavior它是一个仅限 IE 的属性,因此url()不应解析该文件,并且该文件不会被 IE 以外的浏览器下载。

我在 IE9 和 Firefox 4 上进行了测试,加载了 CSS3 PIE 选项卡演示,这是 F12 开发人员工具和 Firebug 分别在其网络选项卡中显示的内容。请注意,Firebug 报告没有尝试请求该/PIE.htc文件。这意味着即使在您的样式表中声明了该文件,Firefox 也不会加载该文件,因为它无法识别该behavior属性。

IE9(F12 开发者工具)

火狐 4 (萤火虫)

我将该属性移动到带有条件注释的仅 IE 样式表的唯一原因是,如果我不想用非标准属性和/或 hack 来污染我的主样式表。

于 2011-04-10T05:31:24.090 回答
1

没有必要。该behavior属性对所有其他浏览器和-moz-border-radiusIE 一样无效。虽然您可能想使用后一种方法来阻止 IE9 加载该行为,但目前市场份额还不够关心。

于 2011-04-10T03:53:58.173 回答
1

更新的答案(2014 年 2 月),因为这似乎是一个相当不清楚的话题。

它的工作方式是您通过“行为”属性触发 HTC 库的加载。

“行为”仅是 IE6-9 属性请参见 MS 官方网站“Internet Explorer 10 标准和怪癖模式已删除对元素行为和 HTML 组件 (HTC) 的支持,以提高互操作性和与 HTML5 的合规性。”

因此,“行为”属性只能在 IE6-9 上使用时触发任何内容的加载。

永远不应为 IE10+ 或其他浏览器(即 Chrome、Firefox、Safari 等)加载该库

我以与@BoltClock 相同的方式进行了测试,发现当我不在IE6-9 浏览器上时,也没有加载htc,也没有加载js,正如预期的那样。我在 IE8、IE9、Chrome 32、IE11 和 Firefox 27 上进行了测试(见下面的截图)。

我会尝试花更多时间进一步测试,也许我错过了一些东西。与此同时,任何人都可以使用官方演示页面css3pie.com/demos/browserstack.com进行测试(他们有免费试用版)。

Chrome、Firefox 和 IE11 未按预期加载 css3pie js 库: 铬 12

火狐 32

IE11 注意:“dynamisch skripts”目录列出了页面内直接添加的javascript(不引用单独的js文件)

IE9 加载了一个 css3pie js 库,正如预期的那样: IE9

IE8 加载了一个 css3pie js 库,正如预期的那样: IE8

注意 1:注意为 IE8 和 IE9 加载的库是不同的。

注意 2:chrome、firefox 和 IE11 不加载任何 css3pie 库,但可能会加载一些 css3pie CSS,这可能需要进一步测试。

于 2014-02-21T17:13:40.787 回答