Archive for Settembre 2007
Debug JS con IE: è ancora una chimera
Ho testato su Internet Explorer i tanto sbandierati Firebug Lite e YUI Logger: una delusione. Non fanno altro che riportare in un div la solita ridicola console di Explorer. Dunque per il momento su IE si va avanti ad alert().
Add comment 20 Settembre 2007
Debug JS con Firebug anche su IE
Firebug è un’extension per Firefox FONDAMENTALE per gli sviluppatori web. Oltre ad essere il JavaScript debugger definitivo, se usato con astuzia fornisce alcune chicche come la possibilità di salvare facilmente le immagini che normalmente non si possono salvare tramite click destro.
Lo uso da quando è nato, ma solo ora mi sono deciso a dedicargli due righe perchè sono appena imbattuto nel classico uovo di colombo: grazie ad un bookmarklet, è possibile usare la versione Lite anche su Internet Explorer. Ecco come:
Add comment 13 Settembre 2007
Iniettare codice in una funzione preesistente
Capita di aver a che fare con funzioni sviluppate da terzi e per questo non modificabile. Ma se proprio avessimo bisogno di modificare una funzione già esistente… come fare?? Ecco due casi.
CASO 1: funzione generica
Dato che vince l’ultima funzione dichiarata, basta dichiarare una funzione con lo stesso nome, naturalmente dopo quella interessata.
ESEMPIO 1:
function prova() {
alert(1);
}
function prova() {
alert(2);
}
prova(); // genera un alert “2″
CASO 2: funzione generata server-side
Queste funzioni vengono generate solitamente con delle variabili valorizzate direttamente dal database. Di conseguenza dobbiamo mantenere parte del codice e cambiare o aggiungere altro. La soluzione è trattare la funzione come una stringa.
ESEMPIO 2:
function prova() {
alert(1);
}
var prova=String(prova); // trasformo la funzione in stringa
prova=prova.substr(0,prova.length-2); // tolgo l’ultima graffa
prova+=”alert(2);”; // aggiungo codice custom
prova+=”}”; // rimetto la graffa
eval(prova); // trasformo la stringa in funzione
prova(); // genera prima un alert “1″ e poi un alert “2″
Add comment 12 Settembre 2007
