【发布时间】:2016-07-31 22:55:08
【问题描述】:
情况
我一直在尝试创建一个 react 应用程序。首先加载的索引页面包含一个基本的 CSS 和 HTML 加载动画,然后是外部脚本和 CSS,在 </body> 之前以阻塞顺序排列,最后一个脚本删除加载器动画并显示页面。
这样做的目的是加载一个包含加载动画的非常小的页面(总共2KB),然后加载脚本、样式表和图像的8MB,从而创造更无缝的用户体验。
<html>
<head>
...
[loader css]
</head>
<body>
<div id="loader">...</div>
<script src="..."></script>
<script src="..."></script>
<link href="..." type="text/css" rel="stylesheet" />
<script> [remove #loader] </script>
</body>
</html>
问题
这在 Chrome 中效果很好,因为它会立即呈现页面(加载动画),然后是外部依赖项。但是因为safari has weird, inconsistent, and ostensibly non-deterministic loading practices:
Safari 开始加载新网页的内容,但在加载足够多的信息之前不会开始渲染它。
这种方法行不通;它只会显示地址栏加载指示器(用于关闭 body 标记上方的依赖项)和空白页面,而不是立即呈现 HTML。
如果有人有解决方案:
- 不会更改页面上加载内容的顺序
- 适用于尽可能多的浏览器
- 不受跨站点脚本漏洞的影响
我们将不胜感激。谢谢!
【问题讨论】:
-
你确定9年前的文章仍然适用吗?
-
在某种程度上,是的。也许确切的技术仍然不适用,但行为可以在今天复制。
标签: javascript html css asynchronous safari