Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2006
    Messaggi
    46

    Problema Focus funzione javascript su IE9

    Ciao ragazzi,
    in un mio sito internet, ho il seguente codice html+javascript per gestire un menu box di notizie a tab.
    codice:
    <script type="text/javascript"> Event.observe(window,'load',function(){ $$('div.box div.tab_menu > h2 > a[href="#"]').each(function(i){ Element.observe(i,'click', function(event){ event.stop(); var aClick = Event.element(event); var box = aClick.up('.box'); var rel = aClick.readAttribute('rel'); Element.select(box,'.tab_content').each(Element.hide); Element.select(box,'.tab_menu h2').each(function(i){ i.removeClassName('active'); }); $('tab_'+rel).show(); aClick.up().addClassName('active'); }); }); }); </script> <div id="share-articoli"> <div class="box"> <div class="tab_menu"> ... </div> ... </div> ... </div>
    Funziona tutto benissimo su firefox, chrome e anche su Explorer fino alla versione 8. Nella 9 invece, i tab funzionano correttamente visualizzando il blocco richiesto e "coprendo" i restanti, ma si viene riportati nella parte superiore della pagina e non si rimane sulla visualizzazione del blocco che si trova invece a fondo pagina.
    Problema di focus? Oppure conflitto con altre componenti js? Come posso migliorare il codice javascript sopra riportato per sistemare questo problema?
    Grazie
    Ciao

  2. #2
    è giusto che ci siano due dollari ?

    function(){ $$('div......

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    si, credo stia utilizzando il framework prototype

    Il codice in una riga sola è illeggibile!

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2006
    Messaggi
    46
    Prova a dare una sistemata al codice postato inizialmente:
    codice:
    <script type="text/javascript">
    	Event.observe(window,'load',function(){ 
    		$$('div.box div.tab_menu > h2 > a[href="#"]').each(function(i){ 
    			Element.observe(i,'click', function(event){
    				event.stop();
    				
    				var aClick = Event.element(event); 
    				var box = aClick.up('.box');
    				var rel = aClick.readAttribute('rel'); 
    				
    				Element.select(box,'.tab_content').each(Element.hide);
    				Element.select(box,'.tab_menu h2').each(function(i){
    					i.removeClassName('active'); });
    				
    				$('tab_'+rel).show();
    				aClick.up().addClassName('active');
    			});
    		});
    	});
    </script> 
    <div id="share-articoli">
    	<div class="box">
    		<div class="tab_menu">
    			...
    		</div>
    		...
    	</div>
    	...
    </div>
    Confermo di utilizzare prototype. Non mi vengono segnalati errori a livello di funzione javascript

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    che versione della libreria stai importando?

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2006
    Messaggi
    46
    Originariamente inviato da Vindav
    che versione della libreria stai importando?
    1.6.1

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    3,660
    Aggiorna alla 1.7 e dovresti risolvere, la 1.6 ha qualche problema di compatibilità con il browser. Andando + nello specifico il problema è la riga di codice event.stop() che non funziona correttamente con IE9 con le vecchie versioni della libreria.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.