11548 sujets

JavaScript, DOM et API Web HTML5

bonjour, j'ai un petit souci avec ce script que j'ai réalisé:
il sert à laisser actif les sous liens du menu quand on est sur la page en cours.
petit bémol:le script fonctionne très bien sous firefox mais pas sous IE.
Smiley fache j'aimerais savoir pourquoi!!

  window.onload=active_menu;
function active_menu()
{
var url = document.location.href;			
var extension=url.substring(url.lastIndexOf("/"));   
var domaine=extension.substring(1,extension.indexOf("_",1));
var l=document.getElementById('menu').getElementsByTagName("a");

for (var i =0; i<l.length; i++) {

var lien=l[i].getAttribute('href');
var coup=lien.substring(0,lien.indexOf("_",0));

	if(domaine==coup || extension.indexOf('?')>-1)
	{
	
			montre('smenu1');  
			break;
			}
			else
			{
			continue;
			}

}

}
bizzare!!
pourtant le script est ok!!
y a t'il qqn de calé en javascript dans la salle??[/i]
le + étrange c que ce crétin d'explorer m'indique aucun message d'erreur.......

d'habitude jme débrouille tout seul, jsuis développeur koi mais la j vais avoir besoin d vot'aide.

sinon j vais m faire un ptit script en php mais bon..

juste pour un menu sans base de données ca fait un peu pit, non??
Yop,

Pourquoi ne pas tester document.location.href.find(l[ i].href) ?

Enfin, vérifie chacune de tes valeurs ulr, extension, domaine et coup avec des alert() pour voir ce qui est testé véritablement.

Et puis, le
else { continue }
est inutile
Modifié par Tymlis (19 Oct 2007 - 09:52)
c bon j'ai trouvé hier soir

sous explorer le href d'un lien prend tout le chemin de l'url..

ex:
<li><a href="prestations_sotres_micro.php">Services micro-informatique</a></li>

donnera sous ie si on affiche le contenu du lien avec un document.write:
http://localhost/test/Sotres/2/prestations_sotres_micro.php
et sous firefox:
prestations_sotres_micro.php

donc j'ai fais comme ci:

window.onload=active_menu;
function active_menu()
{
var url = document.location.href;			
var extension=url.substring(url.lastIndexOf("/"));   
var domaine=extension.substring(1,extension.indexOf(".php"));
var domaine1=domaine.substring(0,domaine.indexOf("_"));
var l=document.getElementById('menu').getElementsByTagName("a");

for (var i =0; i<l.length; i++) {

var lien=l[i].getAttribute('href');



je compare les navigateurs et j fais du découpage de chaines Smiley ravi

 if(navigator.appName=="Netscape")
 {
 vi=lien.substring(0,lien.indexOf(".php")); 
 vi_1=vi.substring(0,vi.indexOf("_")); 
}

else if(navigator.appName=="Microsoft Internet Explorer")
{
var v_lien=lien.substring(lien.lastIndexOf("/"));  
vi=v_lien.substring(1,v_lien.indexOf(".php")); 
 vi_1=vi.substring(0,vi.indexOf("_")); 
}


je compare l'url en cours ou plutot le morceau avec mon href:
si y sont pareils et selon la valeur du mot du lien j'affiche tel menu pis je break

if(lien!="#")
{


	if(domaine1==vi_1 && vi_1=="prestations")
	{
	
			montre('smenu1');  
			break;
			}
			else
			{
			continue;
			}

}
}



nota:c pas super optimisé, c vrai mais comme je connais mes liens et que je leur donne toujours des noms cohérents(référencement oblige) et que de + on peut chopper le lien, on peut lui appliquer un style facilemenent en css
Smiley lol Smiley lol Smiley lol
vous pouvez toujours faire vos suggestions!!!
a+
[/i]
Encore une fois, pourquoi ne pas tester tout simplement :

document.location.href.find(lien.href)
?

Parce que le browser detect, caymal.