通过JS加载CSS

时间:2014-11-24 17:43:14

标签: javascript android css mobile

我正在尝试使用Google在其网页速度分析网站上提供的代码,通过JS加载我的非必要CSS。 代码是:

  var cb = function() {
    var l = document.createElement('link'); l.rel = 'stylesheet';
    l.href = <?php echo "'css/" . $page . "-mobile.css'"; ?>;
    var h = document.getElementsByTagName('head')[0]; h.parentNode.insertBefore(l, h);
  };
  var raf = requestAnimationFrame || mozRequestAnimationFrame ||
      webkitRequestAnimationFrame || msRequestAnimationFrame;
  if (raf) raf(cb);
  else window.addEventListener('load', cb);

它似乎在Safari(桌面和移动),chrome(桌面和移动)和mozilla(桌面和移动)上运行良好。但由于某种原因,三星用于Galaxy S4及以下的浏览器没有加载css文件(尽管S5按预期工作,并加载CSS)。

我尝试了所有内容,我只是认为内置的浏览器三星使用的只是蹩脚的.. 会喜欢任何可能对此有帮助的建议, 谢谢, 波阿斯。

2 个答案:

答案 0 :(得分:2)

查看android浏览器js错误后我遇到了同样的问题:

about:debug (write it instead the url of the page with the issues)

您希望从请求动画帧回调中调用cb(如果存在) 将检查添加到它们中的每一个都将解决问题 使用webkitRequestAnimationFrame而不是onload来渲染它。

  var raf = false;
  raf = !raf && typeof (requestAnimationFrame) !== 'undefined' ? requestAnimationFrame : raf;
  raf = !raf && typeof (mozRequestAnimationFrame) !== 'undefined' ? mozRequestAnimationFrame : raf;
  raf = !raf && typeof (webkitRequestAnimationFrame) !== 'undefined' ? webkitRequestAnimationFrame : raf;
  raf = !raf && typeof (msRequestAnimationFrame) !== 'undefined' ? msRequestAnimationFrame : raf;
  if (raf) {
    raf(cb);
  }else {
    window.addEventListener('load', cb);
  }

答案 1 :(得分:1)

我有完全相同的问题。 S4在requestAnimationFrame上窒息。

去除:

var raf = requestAnimationFrame || mozRequestAnimationFrame ||
  webkitRequestAnimationFrame || msRequestAnimationFrame;
if (raf) raf(cb);
else window.addEventListener('load', cb);

并且只使用:

 window.addEventListener('load', cb);

为我修好了。