尝试在Joomla中使用HeadJS。我在我的模板中添加了一段代码-它抓取头输出中的javascript文件,准备一个字符串在head.js代码之间输出它们,然后从joomla的head output标签中删除所有javascript文件。
问题是一些脚本是在模板之后加载的。例如,一个模块将在模板加载后将一些脚本文件排入队列,因此它的文件显示在我的head.js代码之外。你知道我该怎么控制这一切吗?
$data = $this->getHeadData();
if( $data['scripts'] ){
foreach ($data['scripts'] as $url=>$type){
if( !strstr($url, 'ajax.googleapis.com/ajax/libs/jquery') )
$headjs[] = $url;
}
unset( $data['scripts'] );
$data['scripts'][$template . '/js/head.js'] = array(
'mime' => 'text/javascript',
'defer' => false,
'async' => false);
$this->setHeadData($data);
}然后..。
<script>
head.js(
<? foreach($headjs as $script): ?>
'<?=$script?>',
<? endforeach; ?>
function(){
}
);
</script>发布于 2011-10-25 20:01:04
不同的扩展可以连接到在处理输出期间触发的不同事件(因此,即使在呈现模板之后)。
到目前为止,我发现最好的选择是创建系统插件,并将它的顺序移动到最后一个可用的系统插件。
现在您有两个选择:
如果你在完全控制网站的情况下使用异步脚本加载,这是很好的,但几乎不可能实现为Joomla的通用扩展。一些扩展在head中使用内联脚本,一些在html主体中,你必须保持执行的顺序(简单的例子: Mootools必须先加载)。
我用来异步加载那些我自己包含的脚本(在我的模板或我的扩展中)。使用Joomla core添加的任何脚本(Mootools、core.js等)或者其他我没碰过的扩展。
https://stackoverflow.com/questions/7258481
复制相似问题