Questo potrebbe farmi macellare, poiché sono abbastanza sicuro che sia una cattiva pratica di codifica, quindi ecco qui:
Ho un sito guidato da AJAX che carica sia contenuto che javascript in una volta sola usando Mootools ' Request.HTML
.
Poiché ho degli script di inizializzazione che devono essere eseguiti per completare "l'impostazione" del modello, includo quelli in una funzione chiamata pageComplete()
, su ogni pagina
Se si visita una pagina in un'altra, la precedente funzione pageComplete()
non viene più applicata, poiché ne viene definita una nuova.
La funzione javascript che carica le pagine chiama dinamicamente pageComplete()
alla cieca quando la chiamata AJAX è completata e viene caricata nella pagina:
function loadPage(page, params) {
// page is a string, params is a javascript object
if (pageRequest && pageRequest.isRunning) pageRequest.cancel();
pageRequest = new Request.HTML({
url: '<?=APPLICATION_LINK?>' + page,
evalScripts: true,
onSuccess: function(tree, elements, html) {
// Empty previous content and insert new content
$('content').empty();
$('content').innerHTML = html;
pageComplete();
pageRequest = null;
}
}).send('params='+JSON.encode(params));
}
Quindi sì, se pageComplete()
non è definito in una delle pagine, viene chiamato il vecchio pageComplete()
, che potrebbe essere potenzialmente disastroso, ma al momento ogni singola pagina ha pageComplete()
definito, anche se è vuoto.
Buona idea, cattiva idea?