ciao a tutti
come da titolo, qual'è il modo corretto per includere jquery in joomla2.5?
innanzitutto quali sono le possibilità a disposizione ?
le uniche che conosco sono:
- $document->addScript();
- <script> getScript('//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js',function() {
- includere dal master templatedella pagina
attualmente sto utilizzando questo script all'inizio del template di una vista
\components\com_<nomecomponente>\views\<nomevista>\tmpl\default.php
$document = &JFactory::getDocument();
$document->addScript(JUri::root(true) . '/media/system/js/jquery/jquery-1.10.0.min.js' );
$document->addCustomTag( '<script type="text/javascript">jQuery.noConflict();</script>' );
il problema è che questo metodo è sconsigliato dalla documentazione ufficiale (perchè?)
http://docs.joomla.org/Adding_JavaScript_and_CSS_to_the_page$document->addScript($url);
Note this will **NOT** include Mootools or jQuery.
in effetti nella pagina in cui includo jquery ho creato una select dinamica e ogni tanto non funziona, si deve ricaricare pagina, ma non sono sicuro che la causa sia il metodo di inclusione di jquery, devo indagare,
ma se questo modo è sconsigliato qual'è il metodo consigliato?
in un componente ho trovato questo script sempre nel tempate della vista
\components\com_<nomecomponente>\views\<nomevista>\tmpl\default.php
<script type="text/javascript">
function getScript(url,success) {
var script = document.createElement('script');
script.src = url;
var head = document.getElementsByTagName('head')[0],
done = false;
// Attach handlers for all browsers
script.onload = script.onreadystatechange = function() {
if (!done && (!this.readyState
|| this.readyState == 'loaded'
|| this.readyState == 'complete')) {
done = true;
success();
script.onload = script.onreadystatechange = null;
head.removeChild(script);
}
};
head.appendChild(script);
}
getScript('//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js',function() {
js = jQuery.noConflict();
js(document).ready(function(){
js('#form-prevrichiesta').submit(function(event){
});
});
});
</script>