窗口.合并js文件后,addEvent不是一个函数



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

这就是你的问题:您正在脚本上使用async属性- async意味着脚本将加载而不像默认行为那样保持dom执行(没有asyncdefer)。所以当你没有mootools加载到页面时,你试着调用window.addEvent,这就是为什么你得到undefined的错误。

问题的两个解决方案:

  1. 删除async属性,强制脚本保持直到加载,然后继续执行dom。
  2. onload事件添加到脚本标签并在那里执行脚本的其余部分:

<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');
        });
    }

最新更新