2010-10-28 74 views
0
core.js: 
    var core = 
    { 
     all:{}, 
     load: function(jsUrl) 
     { 
      $.ajaxStup({async, false}); 
      $.getScript(jsUrl); 
     }, 
     init: function() 
     { 

      $.getJSON('someurl', function(data) 
      { 
       for(key in this.all) 
        alert(key); 

      }); 
     }, 
     here: function(who) 
     { 
      this.all[who.name] = who; 
     } 
    }; 
    $(document).ready(function() 
    { 
     core.init(); 
    }); 

me.js 
    (function() 
    { 
     core.here({name:"me", foo:"bar"}); 
    })();  


CASE 1: 
    <script type="text/javascript" src="/jquery.js"></script> 
    <script type="text/javascript" src="/core.js"></script> 
    <script type="text/javascript"> 
     core.load("/me.js"); 
    </script>   

CASE 2: 
    <script type="text/javascript" src="/jquery.js"></script> 
    <script type="text/javascript" src="/core.js"></script> 
    <script type="text/javascript" src="/me.js"></script> 

问题是,对于情况1我得到一个警报,因为我应该,但情况2,没有警报... 所以问题是:有一个负载事件标签?或者我可以使用什么来同步文件以处理案例2(在IE8中进行调试时,我注意到使用断点解决了这个问题)...有什么我错过了吗?同步加载JS用Ajax调用和加载js文件的文件与<script>标签

+0

我看着这个和document.ready应该触发一旦浏览器具有所有的Javascript,所以me.js&core.here应该已经加载并运行...因此填充'全部'并发射你的alert() 。 但是从代码设计的角度来看,在文档加载时调用init可能很奇怪。为什么不在加载之后调用它,就像这是一个构造函数。那么有没有在推送/上传后调用它或调用它? – 2010-10-28 04:20:10

+0

@Ryan Doom事实上,document.ready只是指出我已经尝试了一些(很多...)的东西......我期望在这里调用'here'函数,因为document 。如你所说,一旦浏览器解析(加载)所有