1

我目前正在开发一个用于自动 PIE 附件的插件。
它遍历所有文档 CSS 样式表,通过 indexOf 检查 CSS3 属性,然后调用 PIE attach 方法以防找到当前选择器的任何内容。
主循环是这样的:

    for (var j = 0, length2 = styleSheet.rules.length; j < length2; j++) {
      rule = styleSheet.rules[j];
      // the replacedProperties is a simple array
      // with string values for css properties - border-radius and so on
        $.each(replacedProperties, function(index, property) {
            if (rule.style.cssText.indexOf(property) !== -1) {
                try {
                    $(rule.selectorText).each(function() {
                       PIE.attach(this);
                    });

                 } catch(e) { }
                    return false;
                 }
            }

        });
    }

这实际上很慢,在 IE8 和 IE7 中的 CSS3 重页上运行长达 2 秒。
问题是,我能以某种方式提高这个循环的性能吗?
PIE.js 实际上优化了重复附件,因此检查 PIE 是否已附加不会做任何事情。
遗憾的是,$.fn.detach 的标准分离技术不适用于 PIE(尽管我没有尝试过香草版本)。
我将非常感谢任何答案。

4

2 回答 2

1

我建议您阅读文档,尤其是关于 pie.js:http ://css3pie.com/documentation/pie-js/

现在我使用pie.htc它,除了有一些缺点之外,它还有更多的优点,所以这是首选的解决方案。

您可以定义哪些样式应直接在 css 中处理 - 通过声明behaviour(/absolute-path-to-pie.htc);. 这比迭代所有样式表和样式规则然后附加饼图要快得多。您也可以轻松地将其放入条件样式表中。我认为这应该可以解决您的问题 - 无需手动迭代所有样式。

于 2012-06-01T09:38:36.310 回答
0

这里是 PIE 的忠实粉丝。但是,在性能方面,成本比人们想象的要大。最近一直在一个怪物PC上开发一个网站,可以说,运行带有IE8的Windows7和一些用于测试的VM。测试了 PIE 1.0 和 PIE 2.0 beta。虽然在项目早期,并且只有几十个元素附加了 PIE 行为,但 IE 似乎在向下滚动以及使用 jQueryUI 效果和动画时会卡住。使用 pie 2.0,关闭民意调查似乎可以提高性能,但首先会破坏使用 pie 的目的……您可以获得所需的视觉外观,但没有任何效果。最后,需要考虑客户端的性能成本。2010 年,Google 报告说几乎 48% 的网络客户端使用 IE,主要是 IE7(winXP)。尽管此后数字发生了很大变化,但有些人根本没有升级的手段。所有的事情放在一起,通过 PIE 提供 css3 内容可能会对客户产生很大的影响......不知道 100% 它将如何表现,您的客户在访问您的网站之前可能会三思而后行,因为它的表现并不顺畅(我知道我会)。所以,至少对于这个项目。我正在放弃 PIE,并恢复到良好的旧 PNG。到目前为止,包含我需要用渐变和圆角设置样式的元素的精灵比 PIE 小。毫无疑问,它会变大,但不会像以前那样影响性能。只是为了记录,我不知道浏览器是如何构建的,我也不在乎,但是伙计……他们用 IE 把它搞砸了。通过 PIE 提供 css3 内容可能会对客户产生重大影响……不知道 100% 会如何表现,您的客户在访问您的网站之前可能会三思而后行,因为它的表现并不顺畅(我知道我会)。所以,至少对于这个项目。我正在放弃 PIE,并恢复到良好的旧 PNG。到目前为止,包含我需要用渐变和圆角设置样式的元素的精灵比 PIE 小。毫无疑问,它会变大,但不会像以前那样影响性能。只是为了记录,我不知道浏览器是如何构建的,我也不在乎,但是伙计……他们用 IE 把它搞砸了。通过 PIE 提供 css3 内容可能会对客户产生重大影响……不知道 100% 会如何表现,您的客户在访问您的网站之前可能会三思而后行,因为它的表现并不顺畅(我知道我会)。所以,至少对于这个项目。我正在放弃 PIE,并恢复到良好的旧 PNG。到目前为止,包含我需要用渐变和圆角设置样式的元素的精灵比 PIE 小。毫无疑问,它会变大,但不会像以前那样影响性能。只是为了记录,我不知道浏览器是如何构建的,我也不在乎,但是伙计……他们用 IE 把它搞砸了。至少对于这个项目。我正在放弃 PIE,并恢复到良好的旧 PNG。到目前为止,包含我需要用渐变和圆角设置样式的元素的精灵比 PIE 小。毫无疑问,它会变大,但不会像以前那样影响性能。只是为了记录,我不知道浏览器是如何构建的,我也不在乎,但是伙计……他们用 IE 把它搞砸了。至少对于这个项目。我正在放弃 PIE,并恢复到良好的旧 PNG。到目前为止,包含我需要用渐变和圆角设置样式的元素的精灵比 PIE 小。毫无疑问,它会变大,但不会像以前那样影响性能。只是为了记录,我不知道浏览器是如何构建的,我也不在乎,但是伙计……他们用 IE 把它搞砸了。

于 2013-10-12T14:13:00.180 回答