it-swarm-eu.dev

Il componente Joomla include JavaScript, errore pop

Sono nuovo in Joomla, ho provato a costruire il mio componente Joomla, tuttavia, quando provo a includere la libreria Jquery ptTimeSelect nel front-end, mostra l'errore javascript

TypeError non rilevato: impossibile leggere la proprietà '_doCheckMouseClick' di undefined

Ho fatto molto google e ho cambiato la posizione del codice, sembra che Joomla ignori automaticamente parte del codice causa questo problema (forse salta qualsiasi codice con "_" trattino basso) e ho provato a rinominare _doCheckMouseClicca per fareControllareClick, mostra lo stesso messaggio di errore.

ecco l'errore pops del codice

funzione chiamante: riga 228 nel file

 $(document).mousedown(jQuery.ptTimeSelect._doCheckMouseClick);  

definire la funzione: riga 387 nel file

 /**
 * Closes the timePicker popup if user is not longer focused on the
 * input field or the timepicker
 * 
 * @private
 * @param {jQueryEvent} ev -    Event passed in by jQuery
 * @return {undefined}
 */
jQuery.ptTimeSelect._doCheckMouseClick = function(ev){
    if (!$("#ptTimeSelectCntr:visible").length) {
        return;
    }
    if (   !jQuery(ev.target).closest("#ptTimeSelectCntr").length
        && jQuery(ev.target).not("input.isPtTimeSelectActive").length ){
        jQuery.ptTimeSelect.closeCntr();
    }

};// jQuery.ptTimeSelect._doCheckMouseClick

Per favore aiuto

1
user3508896

Dopo alcuni tentativi, ho scoperto che Joomla ha un bug con include la libreria JavaScript e risolvo questo problema copiando il codice direttamente nel modello view/default, usando

<?php
$document = JFactory::getDocument();
$document->addScriptDeclaration("
  //300 lines of ptTimeSelect code
")

Spero che questo aiuto per gli altri che incontrano lo stesso problema.

1
user3508896

Credo che il problema sia legato al fatto che il DOM potrebbe non essere pronto quando viene chiamato il metodo. Un altro problema è che Joomla utilizza ancora Mootools per gran parte della funzionalità lato client principale, che utilizza anche $ come punto di ingresso della libreria. È possibile utilizzare un IIFE (Espressione di funzione immediatamente istanziata) per gestirlo in modo creativo in combinazione con l'evento jQuery ready. Aggiungi prima la versione jQuery inclusa con Joomla eseguendo il seguente metodo:

JHtml::_('jquery.framework');

Quindi avvolgi il tuo codice jQuery in questo modo:

(function($) {
    $(document).ready(function(){

        // Insert code here, using $ instead of jQuery

    });
}(jQuery));

Ciò dovrebbe consentire di chiamare la funzione.

1
Brian Bolli

Ho lo stesso problema con il componente Zoo nell'area di amministrazione dopo l'aggiornamento di Joomla alla 3.4.8.

Risolvo questa libreria jquery Zoo di aggiornamento in:

/media/Zoo/libraries/jquery
0
Max