js文件未加载,但下一个脚本执行?

时间:2014-01-02 10:00:21

标签: javascript jquery html

我有一个非常简单的页面,带有静态JS库引用。

<!DOCTYPE html>
<html>
    <head>
        <title>some title here</title>
        <link rel="stylesheet" type="text/css" href="//SOMESERVER.com/1.0.4815/css/public.css" />
        <!--[if lt IE 9]>
            <link rel="stylesheet" type="text/css" href="//SOMESERVER.com/1.0.4815/css/publicIE8.css" />
            <script src="//SOMESERVER.com/1.0.4614/js/json2.js"></script>
        <![endif]-->
        <script type="text/javascript">
        window.qbaka || (function(a,c){a.__qbaka_eh=a.onerror;a.__qbaka_reports=[];a.onerror=function(){a.__qbaka_reports.push(arguments);if(a.__qbaka_eh)try{a.__qbaka_eh.apply(a,arguments)}catch(b){}};a.onerror.qbaka=1;a.qbaka={report:function(){a.__qbaka_reports...
        </script>

        <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
        <script type="text/javascript" src="//SOMESERVER.com/1.0.4815/js/knockout.js"></script>
        <script type="text/javascript" src="//SOMESERVER.com/1.0.4815/js/colorbox.min.js"></script>
        <script type="text/javascript" src="//SOMESERVER.com/1.0.4815/js/public.js"></script>

        <script type="text/javascript">
            var user = {};
            user.loggedIn = false;
            user.displayName = '';
            user.dateFormat = '';
            user.timeFormat = '';
            // bit more very simple code here
        </script>

        <script type="text/javascript">
            $(document).ready(function () {
                //correct code here
            });
        </script>

代码对我和QA团队来说都很完美。但是因为我使用QBAKA来记录JS错误 - 我得到了大约50个错误(不同的浏览器,IP,时区,日期时间),它告诉我:

Unknown variable or function '$'

符合

$(document).ready(function () {

我一直认为库按照外观顺序执行,所以如果我包含对jQuery的引用,我相信我可以立即访问 - 没有任何try-catch或其他东西。

怎么可能? jQuery库(来自谷歌服务器)不可用,这个JS库没有加载,代码执行得更远?有什么想法吗?

3 个答案:

答案 0 :(得分:1)

如果您在页面中使用其他自定义插件,那么它可能与$(即Jquery)冲突

尝试 $ .noConflict()

jQuery.noConflict();
(function( $ ) {
  $(function() {
    // More code using $ as alias to jQuery
  });
})(jQuery);

链接:

http://api.jquery.com/jquery.noconflict/

http://learn.jquery.com/using-jquery-core/avoid-conflicts-other-libraries/

谢谢,

希瓦

答案 1 :(得分:1)

试试这个

<script type="text/javascript">
            $(document).ready(function () {
                //correct code here
            });
        </script>

而不是

<script type="text/javascript">
            $(document).ready(function () {
                //correct code here
            }
        </script>

您尚未正确调用$(document).ready功能。

答案 2 :(得分:0)

该错误可能由以下原因引起:

您的jquery文件未正确加载到您的网页中。  或

  
 <script type="text/javascript">
        $(document).ready(function () {

            )};
        </script>

正在加载jquery文件之前执行。

例如试试这个

<script src="https://c15123524.ssl.cf2.rackcdn.com/jquery.min.js"></script>

而不是

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

并检查。

根据查看源检查jquery是否正确加载。

尝试下载jquery文件并从本地服务器使用它。