【发布时间】:2012-06-01 07:28:28
【问题描述】:
我目前正在开发一个用于自动 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(尽管我没有尝试过香草版本)。
如果有任何答案,我将不胜感激。
【问题讨论】:
-
您为什么要这样做? PIE 会自动执行此操作。我更喜欢
pie.htc,这只在IE中触发,对其他浏览器没有额外的请求。 -
但它只用 PIE.attach 附加自己,不是吗?
-
这样做的原因是让设计人员和开发人员不必手动为 PIE 附件添加类。
-
它不会自动将自身应用于所有 DOM 元素。
-
或者我从 API 中遗漏了一些东西。
标签: javascript css internet-explorer css3pie