使用easeljs时init()函数未定义

时间:2016-03-06 19:16:51

标签: javascript jquery javascript-events easeljs

我正在开发一个小项目来使用easeljs和jQuery创建一个图像库,我对这两个工具都很陌生,这个特殊的问题让我摸不着头脑。

我的HTML非常基础,我只想在开始添加任何铃声和口哨之前获得功能:



Item




如果我理解正确,为了设置一个新的阶段并基本上让整个脚本工作,我需要在我的脚本开头运行<body onload="init();"> <div style="margin-top:20px;" class="col-sm-8"> <div class="embed-responsive embed-responsive-4by3"> <canvas class="embed-responsive-item" id="slide-show" width="640" height="480"></canvas> </div> </div> </body>函数。

&#13;
&#13;
init()
&#13;
&#13;
&#13;

请注意,这肯定没有完成,部分功能已完成一半。我只是想进行一些调试,因为我处理了事情并在第一步遇到了墙,初始化函数似乎没有像预期那样触发。

1 个答案:

答案 0 :(得分:0)

主要问题是<body onload="someFunction()">将寻找在全局范围内定义someFunction,即执行window.someFunction()

现在,您init()不在全球范围内。它仅存在于$(document).ready(function(){ ... })函数内。

因此,一种解决方案是将init函数添加到全局范围,如下所示:

$(document).ready(function() {
     // ... all your current definitions
     window.init = init;
});

请注意,init只会在触发window jQuery事件后定义并添加到$(document).ready这一事实。但它不应该是一个问题,因为$(document).ready通常比onload事件更早发生[1],因此在init中调用之前定义<body onload="init()">

[1] $(document).ready在加载 HTML文档后触发。 onload是在所有内容(包括图片等)加载后触发的内置DOM事件。