首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Joomla中使用headjs?

如何在Joomla中使用headjs?
EN

Stack Overflow用户
提问于 2011-08-31 22:28:28
回答 1查看 544关注 0票数 1

尝试在Joomla中使用HeadJS。我在我的模板中添加了一段代码-它抓取头输出中的javascript文件,准备一个字符串在head.js代码之间输出它们,然后从joomla的head output标签中删除所有javascript文件。

问题是一些脚本是在模板之后加载的。例如,一个模块将在模板加载后将一些脚本文件排入队列,因此它的文件显示在我的head.js代码之外。你知道我该怎么控制这一切吗?

代码语言:javascript
复制
$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);
}

然后..。

代码语言:javascript
复制
 <script>
        head.js(
        <? foreach($headjs as $script): ?>
            '<?=$script?>',
        <? endforeach; ?>
            function(){
            }
        );
    </script>
EN

回答 1

Stack Overflow用户

发布于 2011-10-25 20:01:04

不同的扩展可以连接到在处理输出期间触发的不同事件(因此,即使在呈现模板之后)。

到目前为止,我发现最好的选择是创建系统插件,并将它的顺序移动到最后一个可用的系统插件。

现在您有两个选择:

  1. 使用onBeforeCompileHead event (我猜是引入了Joomla 1.5.23)将脚本移动到headjs。
  2. 使用onAfterRender事件并解析head html代码,所以它是使用headjs加载的。

如果你在完全控制网站的情况下使用异步脚本加载,这是很好的,但几乎不可能实现为Joomla的通用扩展。一些扩展在head中使用内联脚本,一些在html主体中,你必须保持执行的顺序(简单的例子: Mootools必须先加载)。

我用来异步加载那些我自己包含的脚本(在我的模板或我的扩展中)。使用Joomla core添加的任何脚本(Mootools、core.js等)或者其他我没碰过的扩展。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7258481

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档