说我有一个字符串表示我想动态添加到文档的一堆CSS规则。这样的事情会做的伎俩:当动态添加CSS规则到文档时等待样式被应用
function loadCssRules(rules, doc, callback) {
var styleElement = this.createElement("style", doc);
styleElement.type = 'text/css';
if (styleElement.styleSheet) {
// IE < 11
styleElement.styleSheet.cssText = rules;
} else if (styleElement.sheet) {
// IE >= 11
styleElement.sheet.cssText = rules;
} else {
// Other browsers
styleElement.innerHTML = rules;
}
if (callback) {
styleElement.addEventListener('load', callback);
}
doc.getElementsByTagName("head")[0].appendChild(styleElement);
}
然而,callback
永远不会被调用。我想这是因为style
元素不支持load
事件,不是吗?
无论如何,只有在应用所有新规则后,我才能继续执行?
应用样式是同步的,没有什么可以等待? – adeneo
@adeneo确定吗?你知道它是否在规范?有什么办法可以触发重新布局,所以我可以确定吗?你会发现,添加这些规则会改变整个文档的布局,并且由于我需要根据某些元素的尺寸进行定位,因此让某些元素具有* old *大小会成为问题。 –