La compatibilità tra browser diversi è uno dei problemi maggiori nei confronti dei quali gli sviluppatori di WebApps di devono confrontare quotidianamente. Un browser che implementa qualcosa, l’altro che no, o che la implementa diversamente. Necessità di codice customizzato, generato a partire da informazioni che non sono mai sicure… insomma, un vero casino.
Ma a volte, sarebbe sufficiente davvero un briciolo di buona volontà… Questa mattina siamo stati presso un grosso cliente a consegnare alcune macchine client GNU/Linux, basate su DSL ed equipaggiate con il browser SeaMonkey, che partono da una eprom flash su macchine fan-less.
Fatti i test previsti, constatato che tutto funziona correttamente, siamo andati da un altro cliente (da cui mi trovo tutt’ora). Dopo meno di 3 ore, chiamano dal grosso cliente dicendo che “qualcosa non funziona”.
Sotto la guida di uno di loro, riesco a raggiungere il form “html + javascript” su cui SeaMonkey tira le quoia. Firebug alla mano, scopro che il problema è un errore, legato ad una funzione che non esiste:
document.getElementById("IdName").click()
Fruga fruga fruga, scopro che “IdName” è un tag di tipo Anchor, e che l’implementazione del click su questi elementi non è standard, ma implementata da Microsoft Internet Explorer, eseguendo il contenuto della sezione “onClick” legata a quel tag. Ottimo. Splendido. L’applicazione non si può modificare (roba della casa madre), e quindi quella parte del sito non potrà essere utilizzata per lo scopo previsto (pare si possa farne a meno).
E sapete cosa sarebbe stato sufficiente fare per far funzionare il tutto sui due browser? Chiamare la funzione “onClick” invece che “click”…
La possibilit´a di “Creare” una funzione click non ´e data?