11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour, tout d'abord je tiens a signaler que je suis debutant en la matiere, mais qu'il m'a semble justifie de poster ici au vu de mon probleme... Merci donc de votre indulgence Smiley lol

Voici donc le souci, le fait est que j'avais besoins d'un menu dont les differentes parties restent ouverte y compris au rechargement de la page. Je me sert de cookie pour passer la valeur de la partie ouverte sur la page appelee. cependant deux problemes surviennent que je n'arrive pas a resoudre: 1/ cela fonctionne plutot bien sous ie7 et FF mais malheureusement pas sous ie6....
2/ Le site etant fait sous spip, celui-ci envois des cookie de sessions lorsque l'on va sur la partie admin, ce qui empêche mon script de fonctionner normalement ensuite..

J'ai conscience que ma manniere de programmer doit y être pour quelque chose, mais je ne sais pas comment debugger Smiley confus Smiley confused

Voici le script en question en suivant la page test du menu et le site si besoin:



function toggle(id)
{
	el = document.getElementById(id);
	var display = el.style.display ? '' : 'none';
	el.style.display = display;
}

function getCookieVal(offset)
{
var endstr=document.cookie.indexOf (";", offset);
if (endstr==-1) endstr=document.cookie.length;
return unescape(document.cookie.substring(offset, endstr));
}
function LireCookie(nom)
{
var arg=nom+"=";
var alen=arg.length;
var clen=document.cookie.length;
var i=0;
while (i<clen)
{
var j=i+alen;
if (document.cookie.substring(i, j)==arg) 
i=document.cookie.indexOf(" ",i)+1;
javascript:ecritCook();
if (i==0) break;
}
return null;
}

function EcrireCookie(nom, valeur)
{
var argv=EcrireCookie.arguments;
var argc=EcrireCookie.arguments.length;
var expires=(argc > 2) ? argv[2] : null;
var path=(argc > 3) ? argv[3] : null;
var domain=(argc > 4) ? argv[4] : null;
var secure=(argc > 5) ? argv[5] : false;
document.cookie=nom+"="+escape(valeur)+
((expires==null) ? "" : ("; expires="+expires.toGMTString()))+
((path==null) ? "" : ("; path="+path))+
((domain==null) ? "" : ("; domain="+domain))+
((secure==true) ? "; secure" : "");
}

function ecritCook(){
	if(document.cookie == "menu_1=smafti"){
		if (document.getElementById){
			if (document.getElementById("afti").style.display='block'){
		javascript:toggle("afti");
			}
		}
	}
	else if(document.cookie == "menu_1=smafti2"){
		if (document.getElementById){
			if (document.getElementById("nos_formations").style.display='block'){
		javascript:toggle("nos_formations");
			}
		}
	}
	else if(document.cookie == "menu_1=smafti3"){
		if (document.getElementById){
			if (document.getElementById("contrat").style.display='block'){
		javascript:toggle("contrat");
			}
		}
	}
	else if(document.cookie == "menu_1=smafti4"){
		if (document.getElementById){
			if (document.getElementById("postuler").style.display='block'){
		javascript:toggle("postuler");
			}
		}
	}
	else if(document.cookie == "menu_1=smafti5"){
		if (document.getElementById){
			if (document.getElementById("contacter").style.display='block'){
		javascript:toggle("contacter");
			}
		}
	}
}


http://azionlab.free.fr (ici le menu seul)
http://afti.communicas.fr/ (ici le site test)

Merci beaucoup d'avance de votre aide Smiley biggrin
Bonjour,

Ça n'a pas de rapport direct avec ton problème, mais je crois que tu devrais te renseigner sur la notion de Doctype, son utilité, le mode Quirks, etc.
http://css.alsacreations.com/Bases-et-indispensables/DTD-comment-choisir

Pour le problème évoqué: ce type d'information (sous-menu qui doit être ouvert) ne devrait-il pas faire partie du code HTML de chaque page?
Par ailleurs, ton menu est inutilisable sans Javascript: très mauvais plan.

Verdict: refaire le menu.
Possibilité: se baser sur le modèle suivant, qui propose une fonctionnalité «sous-menu ouvert par défaut» grâce à une classe dans le code HTML:
http://css.alsacreations.com/Tutoriels-JavaScript/Creer-un-menu-accordeon-avec-jQuery

Bonne continuation. Smiley smile
Merci de ta reponse Smiley smile

Concernant le sous menu qui doit rester ouvert, la structure veut que ce ne soit qu'une seule et même page sous forme de "squelette" qui soit en fait chargée, avec le contenu qui change.... il me faut donc recuperer la valeur du sous menu clique, le transmettre et le recuperer dans la même page...
Pour la partie Doctipe, j'avoue ne pas être exactement aux normes, voir pas du tout.... Smiley biggol Je me renseigne et je corrige ça dès que possible Smiley confused

Je vais essayer le tuto que tu m'envois, qui me sera certainement très utile, merci encore Smiley biggrin
H-Hill a écrit :
Concernant le sous menu qui doit rester ouvert, la structure veut que ce ne soit qu'une seule et même page sous forme de "squelette" qui soit en fait chargée, avec le contenu qui change.... il me faut donc recuperer la valeur du sous menu clique, le transmettre et le recuperer dans la même page...

Je pense que SPIP a largement les capacités pour générer un menu légèrement différent (ajout d'une classe sur tel ou tel élément) en fonction de la page qui est appelée ou de la rubrique.

Poser la question sur un forum ou une liste de diffusion de spipeurs ne peut pas faire de mal. Smiley cligne

Sinon, pourquoi pas les cookies. Au pire quand ça ne marche pas le menu reste utilisable. On perd en ergonomie, mais pas en accessibilité.