Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di bagu
    Registrato dal
    Mar 2003
    Messaggi
    620

    script che non convivono

    in una pagina ho dovuto inserire 2 js uno che comanda un menù a scomparsa e l'altro che sostitiuse il target _blank.
    Da soli funziano perfettamente mentre messi in coppia ( esterni o interni alla pagina nn cambia nulla).
    Non è che en capisca di js ma non mi pare ci siano cose definite con lo stesso attributo.
    questi sono gli js :
    codice:
    function intercetta() {
        for (var i=0; i<document.links.length; i++)
            if (document.links[i].className=="blank") {
                document.links[i].target="_blank";
            }
    }
    window.onload = intercetta;
    Richiamato nel link con un class="blank", e quello del menù a scomparsa
    codice:
    var currentMenu = null;
    	var mytimer = null;
    	var timerOn = false;
    	var opera = window.opera ? true : false;
    
    	if (!document.getElementById)
    		document.getElementById = function() { return null; }
    	
    	function initialiseMenu(menuId, starterId) {
    		var menu = document.getElementById(menuId);
    		var starter = document.getElementById(starterId);
    	
    		if (menu == null || starter == null) return;
    			currentMenu = menu;
    	
    		starter.onmouseover = function() {
    			if (currentMenu) {
    				currentMenu.style.visibility = "hidden";
    				currentMenu = null;
    				this.showMenu();
    				stopTime();
    	        	}
    		}
    	
    		menu.onmouseover = function() {
    			if (currentMenu) {
    				currentMenu.style.visibility = "hidden";
    				currentMenu = null;
    				this.showMenu();
    	        	}
    		}	
    	
    		starter.showMenu = function() {
    			if (!opera) {
    				menu.style.left = this.offsetLeft + "px";
    				menu.style.top = this.offsetTop + this.offsetHeight + "px";
    			}
    			else {
    				menu.style.left = this.offsetLeft + "px";
    				menu.style.top = this.offsetHeight + "px";
    			}
    			menu.style.visibility = "visible";
    			currentMenu = menu;
    		}
    
    		starter.onfocus	 = function() {
    			this.onmouseover();
    		}
    	
    		starter.onblur	 = function() {
    			this.onmouseout();
    		}
    
    		menu.showMenu = function() {
    			menu.style.visibility = "visible";
    			currentMenu = menu;
    			stopTime();
    		}
    
    		menu.hideMenu = function()  {
    			if (!timerOn) {
    				 mytimer = setTimeout("killMenu('" + menuId + "');", 1500);
    				timerOn = true;
    			}
    		}
    
    		menu.onmouseout = function(event) {
    			this.hideMenu();
    		}
    
    		starter.onmouseout = function() {
    			menu.hideMenu();
    		}
    }
    	function killMenu(amenu) {
    		var menu = document.getElementById(amenu);
    		menu.style.visibility = "hidden";
    		stopTime();
    	}
    	function stopTime() {
    		if (mytimer) {
    		 	 clearTimeout(mytimer);
    			 mytimer = null;
    			 timerOn = false;
    		}
    	} 
    
      window.onload = function() {
    			initialiseMenu("menu1", "menu1Starter");
    			initialiseMenu("menu2", "menu2Starter");
    			initialiseMenu("menu3", "menu3Starter");
    			initialiseMenu("menu4", "menu4Starter");
    			initialiseMenu("menu5", "menu5Starter");
                initialiseMenu("menu6", "menu6Starter");
                initialiseMenu("menu7", "menu7Starter");
    	}
    Il problema è questo se gli js sono entrambi presenti il menù non apre piu' la parte a scomparsa.
    Idee su come ovviare a questo ?
    ciao e grazie paolo
    Non so se Dio esiste ma se non esiste ci fa una figura migliore!
    - S. Benni -

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2001
    Messaggi
    3,259
    provo a buttartela li, prova a mettere nella tua pagina esattamente sto codice:
    codice:
    <script language="text/javascript">
    function intercetta() {
        for (var i=0; i<document.links.length; i++)
            if (document.links[i].className=="blank") {
                document.links[i].target="_blank";
            }
    }
    var currentMenu = null;
    var mytimer = null;
    var timerOn = false;
    var opera = window.opera ? true : false;
    
    if (!document.getElementById)
    document.getElementById = function() { return null; }
    
    function initialiseMenu(menuId, starterId) {
    var menu = document.getElementById(menuId);
    var starter = document.getElementById(starterId);
    
    if (menu == null || starter == null) return;
    currentMenu = menu;
    
    starter.onmouseover = function() {
    if (currentMenu) {
    currentMenu.style.visibility = "hidden";
    currentMenu = null;
    this.showMenu();
    stopTime();
    }
    }
    
    menu.onmouseover = function() {
    if (currentMenu) {
    currentMenu.style.visibility = "hidden";
    currentMenu = null;
    this.showMenu();
    }
    }
    
    starter.showMenu = function() {
    if (!opera) {
    menu.style.left = this.offsetLeft + "px";
    menu.style.top = this.offsetTop + this.offsetHeight + "px";
    }
    else {
    menu.style.left = this.offsetLeft + "px";
    menu.style.top = this.offsetHeight + "px";
    }
    menu.style.visibility = "visible";
    currentMenu = menu;
    }
    
    starter.onfocus = function() {
    this.onmouseover();
    }
    
    starter.onblur = function() {
    this.onmouseout();
    }
    
    menu.showMenu = function() {
    menu.style.visibility = "visible";
    currentMenu = menu;
    stopTime();
    }
    
    menu.hideMenu = function() {
    if (!timerOn) {
    mytimer = setTimeout("killMenu('" + menuId + "');", 1500);
    timerOn = true;
    }
    }
    
    menu.onmouseout = function(event) {
    this.hideMenu();
    }
    
    starter.onmouseout = function() {
    menu.hideMenu();
    }
    }
    function killMenu(amenu) {
    var menu = document.getElementById(amenu);
    menu.style.visibility = "hidden";
    stopTime();
    }
    function stopTime() {
    if (mytimer) {
    clearTimeout(mytimer);
    mytimer = null;
    timerOn = false;
    }
    }
    
    window.onload = function() {
    initialiseMenu("menu1", "menu1Starter");
    initialiseMenu("menu2", "menu2Starter");
    initialiseMenu("menu3", "menu3Starter");
    initialiseMenu("menu4", "menu4Starter");
    initialiseMenu("menu5", "menu5Starter");
    initialiseMenu("menu6", "menu6Starter");
    initialiseMenu("menu7", "menu7Starter");
    intercetta();
    }
    </script>

  3. #3
    Utente di HTML.it L'avatar di bagu
    Registrato dal
    Mar 2003
    Messaggi
    620
    grazie dennis ma non va, anzi è peggio di prima nel senso che il link non si apre in una pagina e il menù non compare.
    Probabilmente mi sono spiegato male prima , il link che deve aprirsi nella nuova non è nel menù ma in un punto qualsiasi della pagina.

    grazie ancora paolo
    Non so se Dio esiste ma se non esiste ci fa una figura migliore!
    - S. Benni -

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Anzitutto ho aggiunto una chiusaquadra nel tuo codice (nel [ /code ]), per poterlo visualizzare meglio (era chiaramente una dimenticanza).

    Ci sono un paio di cose su cui ho dubbi.

    Anzitutto il nome della classe: blank; e` una parola riservata in HTML, per cui potrebbe generare confusione.

    Altra cosa: nel menu, ci sono dei link con classe blank?
    Perche` il primo script va a modificare tali link, inserendo il target="_blank". Questa modifica potrebbe interferire con gli eventi del secondo script.

    Nota finale: che succede se il browser ha abilitato la protezione contro le popup? Tieni presente che aggiungere "target" va contro le norme di XHTML (e contro l'accessibiita` protetta dalla legge Stanca).
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  5. #5
    Utente di HTML.it L'avatar di bagu
    Registrato dal
    Mar 2003
    Messaggi
    620
    grazie mich.
    nel menu' non ci sono target blank .
    Il target blank mi serve solo per i link pubblicitari che preferirei si aprissero all'esterno del sito.

    Cmq sia script che html non fanno aprire popup ma solo pagine nuove.

    In quanto alla legge Stanca hai ragione , questo è solo un trucchetto per aggirare sta cosa, ma come sai il cliente ha sempre ragione.

    ciao
    paolo

    PS moh provo, poi ti faccio sapere
    Non so se Dio esiste ma se non esiste ci fa una figura migliore!
    - S. Benni -

  6. #6
    Utente di HTML.it L'avatar di bagu
    Registrato dal
    Mar 2003
    Messaggi
    620
    ho provato e riprovato e cercato e cercato ancora. Nulla.
    Nessuno mi sa dare una dritta su almeno dove provare a intervenire ?
    a me pare che non riconosca la classe del primo "blank" nel senso che fa andare tutte le ancore in modo simile

    ciao e grazie paolo
    Non so se Dio esiste ma se non esiste ci fa una figura migliore!
    - S. Benni -

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2001
    Messaggi
    21,188
    Ma tu lo hai letto il mio intervento di ieri mattina?
    Hai provato a cambiare nome alla classe? "blank" secondo me e` parola riservata.
    Nuova politica di maggiore severita` sui titoli delle discussioni: (ri)leggete il regolamento
    No domande tecniche in messaggi privati

  8. #8
    Utente di HTML.it L'avatar di bagu
    Registrato dal
    Mar 2003
    Messaggi
    620
    ho provato non cambia.
    d'altra parte lo script da solo o in coppia funziona, solo che in coppia non mi fa piu' aprire il menù a scomparsa

    ciao paolo
    Non so se Dio esiste ma se non esiste ci fa una figura migliore!
    - S. Benni -

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.