合并js文件后,Window.addEvent不是函数

时间:2013-04-23 12:21:42

标签: joomla mootools

我使用joomla的ScriptMerge将所有js文件合并为一个但现在我得到window.addEvent不是挤压盒初始化的函数,其他一切工作正常除了这个...我注意到挤压盒代码是头标签中唯一的javascript块,所有其他脚本都合并并移动到正文...当我点击打开挤压盒的按钮时,它当然不会打开,但是当我再次点击它时它会正常打开...有没有人知道如何解决这个错误?也许是因为现在mootools核心是在合并的js文件中调用但不在头部调用所以挤压盒代码返回错误,因为它没有mootools核心?

1 个答案:

答案 0 :(得分:3)

有你的问题: 您在脚本上使用 async 属性 - async 表示脚本将加载而不像默认行为那样保持dom执行(没有 async 推迟)。 因此,如果您没有将 mootools 加载到页面,则会尝试致电window.addEvent,这就是您收到undefined错误的原因。

问题的2个解决方案:

  1. 删除异步属性以强制脚本保留直到加载,然后继续执行dom。
  2. onload事件添加到脚本标记中并执行其余的脚本:
  3. <script src="http://tereni.me/cache/plg_scriptmerge/975e10ecd911c8ca09713d1120c51a6d.js" async type="text/javascript" onload="onLoadScript();"></script>

    并在其他脚本标记内:

    function onLoadScript(){
            window.addEvent('domready',function(){
                alert('dom is ready');
            });
        }