Ok, ci sono QUASI riuscito. Dico quasi perche' adesso sono arrivato al punto in cui devo fare questo perche' tutto funzioni:
quindi non ho ottenuto nulla perche' comunque devo fare quelle chiamate al mio loader nell'HTML della pagina. Immagino che non importi tanto l'ordine in cui gli elementi script sono nel DOM quanto l'ordine in cui il browser li legge la prima volta. Essendo quindiCodice PHP:<head>
<script type="text/javascript" src="resources/js/js-loader.js"></script>
<script type="text/javascript">
/* <![CDATA[ */
JSLOADER.load ('resources/js/json-support.js', JSLOADER.head);
JSLOADER.load (JSLOADER.jquery, JSLOADER.head);
JSLOADER.load (JSLOADER.jqueryUI, JSLOADER.head);
JSLOADER.load ("resources/js/utilities/jquery.url.js", JSLOADER.head);
JSLOADER.load (JSLOADER.hoverIntent, JSLOADER.head);
JSLOADER.load ("resources/js/main.js", JSLOADER.head);
/* ]]> */
</script>
<script type="text/javascript" src="resources/js/editor-views.js"></script>
</head>
li' fin dall'inizio non importa se gli altri tag script caricati dal loader vengono di fatto messo prima. Quindi se le chiamate al loader vengono fatte anch'esse all'inizio di editor-views.js e subito dopo comincio ad usare jQuery la cosa non funziona.codice:<script type="text/javascript" src="resources/js/editor-views.js"></script>
Il codice del mio loader, che probabilmente si puo' migliorare e' questo:
nessun javascript Guru che abbia un'idea su come posso risolvere?Codice PHP:var JSLOADER = {};
JSLOADER.load = function (jsname, pos) {
var th = document.getElementsByTagName(pos)[0];
var s = document.createElement('script');
s.setAttribute('type','text/javascript');
s.setAttribute('src',jsname);
if (!JSLOADER.firstLoaded) {
JSLOADER.lastInserted = th.insertBefore(s, document.getElementsByTagName ("script")[0]);
JSLOADER.firstLoaded = true;
}
else {
//insertAfter
JSLOADER.lastInserted = th.insertBefore (s, JSLOADER.lastInserted.nextSibling);
}
};
JSLOADER.head = "head";
JSLOADER.body = "body";
JSLOADER.jquery = "http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js";
JSLOADER.jqueryUI = "http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/jquery-ui.min.js";
JSLOADER.hoverIntent = "http://cherne.net/brian/resources/jquery.hoverIntent.minified.js";
JSLOADER.firstLoaded = false;
JSLOADER.lastInserted = null;

Rispondi quotando