日期:2014-05-16  浏览次数:20383 次

javascript加载顺序的疑问???
JScript code

var basePath = 'javascript/';
function include(file) {
        for (var i = 0; i < file.length; i++) {
           ......
           document.write("<" + tag + attr + link + "></" + tag + ">");
        }
}
include(['jquery-1.4.1.min.js','book.js']);

$._newFun= function (content, callback) {
    ......
};


为什么报$没有定义???明明已经先把jquery-1.4.1.min.js加进来了的,我用firefox看了源代码,没问题
而把$._newFun= function (content, callback) {};放在book.js里却能正常运行

------解决方案--------------------
include 动态加载js

根据楼主描述 include 里的引入是按照顺序来加载的, 
['jquery-1.4.1.min.js','book.js'],意思是 加载完了jquery 再加载book
所以 把$._newFun= function (content, callback) {};放在book.js里却能正常运行


如果 
include(['jquery-1.4.1.min.js','book.js']);
$._newFun= function (content, callback) {
......
};
这样的话, 
执行include的时候,仅仅是请求了2个加载链接,就马上执行$._newFun了,然而这个时候jq还没加载完毕,所以就 $没定义了。

楼主可以搜下 js非阻塞加载


------解决方案--------------------
探讨

不知道 你 include 里具体是怎么写的。。。。

<script src="jquery-1.4.1.min.js"></script>
<script src="book.js"></script>
<script>
$._newFun= function (content, callback) {
......
};
</script>

楼主这样写的就是 阻塞……

------解决方案--------------------
浏览器下载时阻塞了,但是你的html输出并没有阻塞

在回调里面执行吧