怎么能写一个代码,如果javascript文件不加载重新加载?

时间:2012-07-11 16:27:47

标签: php javascript jquery load

我有一个页面,php和javascript。有时,javascript文件无法加载,然后我的页面才能正常工作。

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

  1. 我如何改进javasccript loader?
  2. 如果脚本文件未正确加载,如何重新加载脚本文件?
  3. 我已经检查过php页面加载时间超过10秒会破坏页面。

    谢谢

3 个答案:

答案 0 :(得分: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. 提示#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版本,因此这比加载手头版本的速度要快得多。

    享受并祝你好运!

答案 1 :(得分:1)

代码看起来很整洁。

但我会将$(document).ready()脚本放在<head>并将css和javascript组合在一起。

答案 2 :(得分:0)

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

  1. 您正在PHP中设置JavaScript变量并使用它。您的所有脚本都依赖于此变量,因此您需要在head
  2. 中加载它
  3. 由于延迟,事情没有按顺序执行。
  4. 如果以上是正确的,那么我认为以下可能会有效

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