Domanda
Ho iniziato a studiare UserJS in Opera. Per testare, ho provato a collegare la libreria jQuery e l'interfaccia utente di JQuery, ma non ha funzionato. Ecco il codice:
(function( ) {
var headID = document.getElementsByTagName("head")[0];
var newScript = document.createElement('script');
newScript.type = 'text/javascript';
newScript.id = 'myjQuery';
newScript.src = 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js';
headID.appendChild(newScript);
newScript = document.createElement('script');
newScript.type = 'text/javascript';
newScript.id = 'myjQuery2';
newScript.src = 'http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js';
headID.appendChild(newScript);
alert('first alert');
window.addEventListener('load', function (e) {
$('body').html('test page');
}, false);
})( );
Primo lavoro di allerta. Due librerie sono collegate alla pagina, ma il codice jQuery non funziona. Che c'è?
Ps. Ricevo un errore: ReferenceError: variabile indefinita: $
Soluzione
I tuoi script vengono caricati in modo asincrono e probabilmente non sono ancora pronti quando la pagina è caricata, quindi $/jQuery non esistono ancora nell'ambito della finestra.
Dato che stai usando jQuery, puoi facilmente usare il suo $ (documento) .ready () o solo $ (), poiché funziona anche quando è stata caricata dopo la pagina.
Ecco un violino con un semplice script.onload Handler che spara JQuery's Ready () una volta che entrambi gli script sono disponibili:http://jsfiddle.net/qayjf/