1

我有一个页面,php 和 javascript。有时,javascript 文件不加载,然后我的页面将正常工作。

我已经包含 5 个 javascript 文件(jQuery 插件),我想知道:

  1. 我该如何改进 javascript 加载器?
  2. 如果脚本文件未正确加载,我如何重新加载脚本文件?

我已经检查过,当 php 页面加载时间超过 10 秒时,页面会被破坏。

谢谢

4

3 回答 3

2

提示#1:

在页面末尾加载 Javascript 文件。

Javascript 不需要HTTP这么快发送,因为它仅用于页面加载后的动态更改。

移动:

    <script  type="text/javascript" src='src/jquery_1.7.min.js' ></script>
    <!-- fancybox -->
    <!--<script type="text/javascript" src="src/jquery.mousewheel.js"></script>-->
    <script type="text/javascript" src="src/jquery.fancybox.js?v=2.0.6"></script>
    <script type="text/javascript" src="helpers/jquery.fancybox-buttons.js?v=1.0.2"></script>
    <script type="text/javascript" src="helpers/jquery.fancybox-thumbs.js?v=1.0.2"></script>
    <script type="text/javascript" src="helpers/jquery.fancybox-media.js?v=1.0.0"></script>
    <script type="text/javascript">
        var _gaq = _gaq || [];
        _gaq.push(['_setAccount', 'UA-16476667-10']);
        _gaq.push(['_trackPageview']);
        (function() {
            var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
            ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
            var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
        })();

        function fireWhenReady() {
            if (typeof function1 != 'undefined') {
                function1();
            }
            else {
                setTimeout(fireWhenReady, 100);
            }
        }
        $(document).ready(fireWhenReady);
    </script>

到页面底部。

提示#2:

此外,尝试在两个版本中维护您的 Javascript 代码:

  1. Sandbox:您的代码版本很好地分为模块。
  2. Release:网站的代码版本,所有代码都放在一个 Javascript 文件中,并使用 YUI Compressor 之类的工具进行压缩。这会减少文件大小并通过相应减少数量来提高加载速度HTTP requests

提示#3:

代替:

<script type="text/javascript" src='src/jquery_1.7.min.js' ></script>

和:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>

今天的大多数用户都缓存了 jQuery 的 Google API 版本,因此这比必须加载您手头的版本要快得多。

享受和好运!

于 2012-07-11T16:31:33.470 回答
1

那么代码看起来很整洁。

但我会将 $(document).ready() 脚本放在<head>一起加载的 CSS 和 javascript 组中。

于 2012-07-11T16:33:19.590 回答
0

查看评论并猜测您可能遇到的问题,我认为您的情况是:

  1. 您正在 PHP 中设置一个 JavaScript 变量并使用它。你所有的脚本都依赖于这个变量,所以你需要加载它head
  2. 由于延迟,事情没有按顺序执行。

如果以上是正确的,那么我认为以下可能有效

  1. 继续在 head 中使用 JavaScript 并声明一个命名空间,例如var MyBook; MyBook.chapterId = <%= echo $chapter-id %>. 但是然后将所有其他代码作为正文标记结束之前的最后一个脚本文件移动。
  2. 此外,加载$(document).ready(function() {}),并在MyBook.chapterId那里使用。您现在可以将它用于 AJAX 调用或具有加载章节的函数,并将此变量传递给该函数
于 2012-07-13T17:32:10.740 回答