Archive for the 'Javascript' Category

Sarà capitato spesso di trovare questo misterioso alert durante l’esecuzione di una pagina su IE6 o IE7: la pagina viene eseguita, mostra il suo contenuto e poi puff, scompare!

La spiegazione è quanto mai immediata: un javascript sta cercando di modificare il contenuto dell’oggetto padre rispetto alla chiamata della funzione javascript in questione.

Cosa significa?

  1. <body id="mybody">
  2. <div>
  3. <script language="javascript">
  4. document.getElementById(‘mybody’).innerHTML=‘Hello World!’;
  5. </script>
  6. </div>
  7. </body>

Un javascript dentro il div vuole modificare un attributo del padre (diretto o no che sia).

Come risolvere?

usare l’evento onload del body per modificare se stesso.

Nell’ambito di applicazioni complesse mi è stato necessario suddividere la libreria js in più files (per comodità di modifica, per la dimensione del file da far scaricare al client, ecc ecc). Ma, poi, i file js da portarsi dietro sono diventati tanti.

Allora come per i css (@import another.css) e per i comuni linguaggi come ASP e PHP che usano gli include, ho usato questo:

# functions.js

  1. function include(jsname)
  2. {
  3. var h = document.getElementsByTagName(‘head’).item(0);
  4. var script = document.createElement(’script’);
  5. script.src = jsname;
  6. script.type = ‘text/javascript’;
  7. h.appendChild(script)
  8. }
  9.  
  10. include(’subfunctions.js’);

#subfunctions.js

  1.  
  2. function func()  { }

# page.html

  1.  
  2. <script language="javascript" type="text\javascript" src="functions.js"></script>
  3. <script language="javascript">
  4. func();
  5. </script>

Et voilà!

Lo script incluso sarà posizionato in coda al tag <head></head> dell’html generato al client.