我正在使用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的一些设置。
答案 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);