我正在尝试使用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)。
我尝试了所有内容,我只是认为内置的浏览器三星使用的只是蹩脚的.. 会喜欢任何可能对此有帮助的建议, 谢谢, 波阿斯。
答案 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);
为我修好了。