附加到窗口对象的javascript函数未执行,因为它未定义

时间:2013-07-04 21:42:50

标签: javascript jquery colorbox

执行我附加到窗口对象的函数时遇到问题:

someLibrary.js

(function($,window){
   var bar = function(config){
      var init = function(){/*...*/};
      return { init:init };
   };
   window.bar = bar;
})(jQuery, window);

somePage.html

<script src="someLibrary.js" ></script>
<...>
<script type="text/javascript">
   var baz = new bar(); //bar is not defined
</script>

我无法使用bar,因为它尚未定义, 我是否必须在bar内打电话给$(window).load? 我想要做的事情有问题吗?

更新:所有这些代码都在colorbox(而不是iframe)中执行,jQuery已经加载并且$(window).load已经发生:(

parentPage.html

<head>
   <script src="jquery.js"></script>
   <script src="colorbox.js"></script>
</head>
<html>
   <a href="somepage.html" id="link"/>
   <script type="text/javascript">
      $('#link').colorbox();
   </script>
</html>

我还注意到只有在从其他域调用someLibrary.js时才会发生:S

由于

1 个答案:

答案 0 :(得分:0)

页面上的脚本将按顺序执行,因此somelib文件将在调用它的代码之前加载。

未定义的另一个潜在原因是,如果您之前没有在页面中包含jQuery脚本。

<script src="jquery.js" ></script>
<script src="someLibrary.js" ></script>
<...>
<script type="text/javascript">
   var baz = new bar(); //bar is not defined
</script>