javascript - 向文档动态添加 CSS 规则时等待应用样式

标签 javascript html

假设我有一个字符串,表示我想动态添加到文档中的一堆 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);
}

但是,永远不会调用回调。我想这是因为 style 元素不支持 load 事件,不是吗?

是否只有在应用所有新规则后我才能继续执行?

最佳答案

据我所知,规则应用是同步的。我希望是对的,如果是这样的话,whis 会起作用:

function loadCssRules(rules, doc, callback) {
  var styleElement = this.createElement("style", doc);
  ...    
    styleElement.innerHTML = rules;
  } 
  doc.getElementsByTagName("head")[0].appendChild(styleElement);
  if (callback) {
    callback();
  }
}

希望这对您有所帮助。干杯

关于javascript - 向文档动态添加 CSS 规则时等待应用样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21067620/

相关文章:

html - 如何使用 “data-*” 将值绑定(bind)到 “bindAttr” 属性?

html - 在 Html.Textbox 上设置必需的属性

javascript - 将图标 NewPage 从 CkEditor 转换为简单链接

javascript - 如何在LEVEL 3的表单提交中获取LEVEL 4's select element'的值?

javascript - 将平面 json 文件转换为 javascript 中的树结构

html - 流出th的div文字

html - 如何消除元素之间的这种差距?

javascript - 甜蜜警报不起作用

javascript - jQuery 在 IE 中不工作

html - DIV列表链接拒绝触摸