Joomla异步脚本加载jdoc头

时间:2015-03-30 20:40:28

标签: javascript php asynchronous joomla

我正在使用Joomla! 3.4

<jdoc:include type="head">调用head.php中的/libraries/joomla/document/html/renderer/文件,其中可以在部件中找到对$strAttr['async']的引用,以生成脚本文件链接。

$strAttr只是foreach循环命名的数组,但它来自$document->_scripts

我想异步加载我的脚本,如何更改每个脚本文件的属性$strAttr['async']?我知道我可以更改head.php中的代码,但我想我忽略了Joomla的一些设置。

1 个答案:

答案 0 :(得分:2)

如果要对每个脚本文件执行此操作,则必须编写系统插件并实现函数onBeforeCompileHead()

在这个功能中你需要这样的东西:

/**
 * possible implementation of onBeforeCompileHead
 * to make all the scripts async.
 */
public function onBeforeCompileHead() {

    $document = JFactory::getDocument();

    foreach ($document->_scripts => $url) {
        $document->_scripts[$url]['async'] = true;
    }
}

相反,如果您只想让应用程序或模板的js使用JDocument :: addScript();那样:

/**
 * Possible implementation to insert a async script in a component or a module. 
 * @see JDocument::addScript($url, $type = "text/javascript", $defer = false, $async = false)
 */
$document = JFactory::getDocument();
$document->addScript('/media/system/js/sample.js', "text/javascript", false, true);