2015-03-30 93 views
1

我正在使用Joomla! 3.4Joomla異步腳本加載jdoc頭

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

$strAttr只是由foreach循環命名的數組,但它來自$document->_scripts

我想異步加載我的腳本,如何爲每個腳本文件更改屬性$strAttr['async']?我知道我只需更改head.php中的代碼,但我認爲我忽略了Joomla中的某些設置。

+0

嘿那裏。我從一開始就重新調整了您的問題以說明上下文,並略微改進了代碼格式。不要猶豫,把一些大膽的地方,我不知道同步部分會在這個問題。祝你好運!您可以在此處添加生成腳本文件鏈接的渲染器的一部分,以幫助讀者幫助您。 – 2015-03-30 22:33:33

回答

1

如果您想要爲每個腳本文件執行此操作,您必須編寫一個系統插件並實現函數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; 
    } 
} 

相反,如果你只想要讓您的應用程序JDocument :: addScript或模板的使用JS();像這樣:

/** 
* 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);