2

我发现如果我在 iOS 中加载网页,那么如果该页面使用 JQueryMobile,则初始加载需要大约 2 到 3 秒的时间。例如,以下页面几乎是瞬间加载的:

<!DOCTYPE>
<html>
    <head>
        <title>Hello</title>
    </head>
    <body>
        <h1>Hello</h1>
    </body>
</html>

然而,这个需要几秒钟才能加载:

<!DOCTYPE>
<html>
    <head>
    <title>Hello</title>
        <link rel="stylesheet"  href="jquery.mobile-1.1.1.min.css" />
        <script src="jquery-1.7.2.min.js"></script>
        <script src="jquery.mobile-1.1.1.min.js"></script>
    </head>
    <body>
        <h1>Hello</h1>
    </body>
</html>

我能做些什么来摆脱这种延迟吗?

谢谢

4

5 回答 5

3

如果是脚本耗时过长,您可以将它们移至页面底部:

<!DOCTYPE html>
<html>
    <head>
    <title>Hello</title>
        <link rel="stylesheet" href="jquery.mobile-1.1.1.min.css" />
    </head>
    <body>
        <h1>Hello</h1>
        <script src="jquery-1.7.2.min.js"></script>
        <script src="jquery.mobile-1.1.1.min.js"></script>
    </body>
</html>

再说一次,这样做会使准确预测会发生什么以及何时发生变得更加困难。但是 DOM 应该在阻塞脚本标签加载之前加载和渲染。

现在你只需要弄清楚如何处理它。

于 2012-08-30T17:08:45.013 回答
0

尝试将JS放在底部

<!DOCTYPE>
<html>
    <head>
    <title>Hello</title>
        <link rel="stylesheet"  href="jquery.mobile-1.1.1.min.css" />

    </head>
    <body>
        <h1>Hello</h1>
            <script src="jquery-1.7.2.min.js"></script>
        <script src="jquery.mobile-1.1.1.min.js"></script>
    </body>
</html>
于 2012-08-30T17:09:51.817 回答
0

jQueryMobile的响应能力并不那么出名。即使在您尝试了所有优化之后。

您可以尝试通过加载脚本document.createElement()。(理想情况下,即使这也应该放在底部)

function createScript(src){
   var script = document.createElement('script');
   script.src = src;
   document.getElementsByTagName('head')[0].appendChild(script);
}

这实际上是在页面呈现后才开始加载和执行脚本。即有点异步

如果你有很多这样的。

var files = ['1.js', '2.js', '3.js'];
files.map(createScript);

另外,我会为 SenchaTouch 担保(如果这是您愿意考虑的选项)

于 2012-08-30T17:10:50.340 回答
0

您可以尝试将脚本标签放在页面底部

<!DOCTYPE>
<html>
<head>
<title>Hello</title>
    <link rel="stylesheet"  href="jquery.mobile-1.1.1.min.css" />
</head>
<body>
    <h1>Hello</h1>
</body>
<script src="jquery-1.7.2.min.js"></script>
<script src="jquery.mobile-1.1.1.min.js"></script>
</html>

一切都应该加载得更快,但脚本需要 2-3 秒

于 2012-08-30T17:13:03.340 回答
0

JavaScript 会阻止页面的呈现,因为脚本可能会执行 document.write 或进行其他会使呈现的页面无效的修改,因此最佳做法是将脚本标记放在页面底部。这样做的缺点是您将无法在页面中间使用 jquery,甚至 $(document).ready() 也不行。相反,您必须在加载 jquery 之后放置所有脚本,或者您必须使用本机 window.onload 或编写一个轻量级处理程序来在加载 jquery 后注册您的回调。

于 2012-08-30T17:13:08.383 回答