esperienze di programmazione.

Qualche soluzione per non impazzire con javascript, Internet Explorer e il DHTML

May 19, 08 • Web application, Web designComments Off on Qualche soluzione per non impazzire con javascript, Internet Explorer e il DHTMLRead More »

Internet Explorer (da adesso IE) non supporta il DOM come Firefox (da adesso FF), ma supporto solo una parte di DOM: utilizza invece DHTML che, nell’ultima versione, ha subito dei cambiamenti importanti. Questo porta a una serie di problemi nello sviluppare funzioni cross browser in javascript, specialmente se il nostro obiettivo è implementare componenti dell’interfaccia in finestre di pop-up, dalle quali riportare un risultato nella finestra principale (un calendario, selezionare elementi, inserire valori che aggiornano una combo box, ecc.).

Per chi sviluppa web application utilizzando javascript, può capitare di dover risolvere alcuni problemini quando si tratta di far funzionare i propri script concepiti per FF (quindi seguendo lo standard DOM), in IE 6/7.

Ultimamente ho realizzato una web application per la formazione online e mi sono trovato nei guai in diverse occasioni; in particolare quando ho cercato di spostare alcune funzioni dell’interfaccia dalla finestra principale in finestre di pop-up per non affollare la prima. In questo post voglio illustrare i problemi che ho incontrato e le soluzioni che ho adottato. Non pretendo di fornire informazioni originali (anche perché molte delle soluzioni le ho trovate nei forum), quello che mi preme è raccogliere i suggerimenti e strutturarli in modo da fornire un aiuto chiaro a chi incapperà (o è incappato) negli stessi problemi.

Creare un nuovo elemento nella finestra aprente (opener) dalla finestra aperta (pop-up).

Se vogliamo creare e aggiungere un nuovo elemento nella finestre aprente (opener), dalla finestra aperta (con window.open) in IE, dobbiamo utilizzare il metodo createElement() specificando la finestra aprente, altrimenti l’oggetto creato sarà inconsistente e, quindi, inutilizzabile. es.:

document.createElement('input');  sbagliato
window.opener.document.createElement('input');  corretto

Non essendo questo necessario in FF, non saperlo potrebbe portarvi via molto tempo.

Il metodo window.opener.document.getElementById() non funziona in IE7.

In IE7, per poter recuperare un oggetto della finestra window.opener, dalla finestra aperta come pop-up, non possiamo utilizzare la funzione getElementById(), perché genererà un ‘errore. Dobbiamo, invece, impiegare le modalità definite dal DHTML, che sono le seguenti:

- window.opener.document.all[index];
- window.opener.document.all['nomeElemento'];
- window.opener.document.all.item('nomeElemento');

Per una guida esaustiva potete consultare la MSDN Library: HTML and DHTML reference (en).

In javascript, il metodo trim() per l’oggetto String non esiste: una soluzione.

L’oggetto String di javascript offre molti metodi, ma tra questi non esiste il metodo trim(). Il metodo si può rivelare utile quando dobbiamo eliminare gli spazi da stringhe provenienti dalla response di un oggetto XMLHttpRequest.

Questa è una soluzione efficace e di facile implementazione:

String.prototype.trim = function (){
	return this.replace(/^\s*/,””).replace(/\s*$/,””);
}

Una volta definito, tutti gli oggetti String avranno il metodo trim().

Spero che questi brevi e semplici appunti possano esservi utili e possano farvi risparmiare qualche ora nelle estenuanti fasi di debugging.

Tags: , , ,

Comments are closed.