11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous et à toutes !!
J'essaie de reproduire le Sticky Menu
=> http://www.quirksmode.org/js/fixedmenu.html
(Ne pas oublier de prendre le DHTML Micro API Version A)
et cela m'a donné ca

<script type="text/javascript">
window.onload = function () {
	{
	menu('menu_left');
	menu('menu_right'); // je veux apeller deux fois la fonction pour deux menus différents
	}

function menu(id)
	{
	var top = 48;
	var old = top;

	if (document.getElementById)
		{
		var menu = document.getElementById(id);
		}
	else if (document.all)
		{
		var menu = document.all[ id]; // (il y a un espace c'est fait expres pour ne pas que alsacreations le traduisent en [id]
		}
	else if (document.layers)
		{
		var menu = document.layers[ id]; // (il y a un espace c'est fait expres pour ne pas que alsacreations le traduisent en [id]
		}
// Ici on a fait le travail du DHTML Micro API Version A qui consiste à prendre le menu par son id

	if (window.innerHeight)
		{
		var pos = window.pageYOffset;
		}
	else if (document.documentElement && document.documentElement.scrollTop)
		{
		var pos = document.documentElement.scrollTop;
		}
	else if (document.body)
		{
		var pos = document.body.scrollTop;
		}
// Ici on recuperere le nombre de pixels par rapport en haut de la page

	if (pos < top)
		{
		pos = top;
		}
	else
		{
		pos += 32;
		}
	if (pos == old)
		{
		menu.style.top = pos; // on dit  - style="top: pos.px"-   à menu
		}
	old = pos;
	temp = setTimeout('menu()',100); // On attend 100 millisecondes
	}
</script>

Bon ba voila cela ne marche pas pourtant si on regarder le code source du site (ou le site marche !!) cela fait

<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
<!--
var menu;
var theTop = 30;
var old = theTop;

function init()
{
	menu = new getObj('menu');
	comp = new getObj('comp');
	movemenu();
}

function movemenu()
{
	if (window.innerHeight)
	{
		  pos = window.pageYOffset
	}
	else if (document.documentElement && document.documentElement.scrollTop)
	{
		pos = document.documentElement.scrollTop
	}
	else if (document.body)
	{
		  pos = document.body.scrollTop
	}
	if (pos < theTop) pos = theTop;
	else pos += 30;
	if (pos == old)
	{
		menu.style.top = pos;
	}
	old = pos;
	temp = setTimeout('movemenu()',500);
}

function getObj(name)
{
  if (document.getElementById)
  {
  	this.obj = document.getElementById(name);
	this.style = document.getElementById(name).style;
  }
  else if (document.all)
  {
	this.obj = document.all[name];
	this.style = document.all[name].style;
  }
  else if (document.layers)
  {
   	this.obj = document.layers[name];
   	this.style = document.layers[name];
  }
}

var comp;

function showhide(val)
{
	comp.style.visibility = val;
}


// -->
</SCRIPT>

Il faut aussi que le menu en question aie la position absolue, mais ne vous inquiétez pas c'es fait
Donc voila ma bidouille ne marche pas et pas non plus quand je fais du copier coller a partir du site !! Smiley ohwell
Modifié par titoinou (17 Dec 2006 - 10:20)
petit up! car personne n'a répondu Smiley bawling
Jvous fais confiance Smiley confused
(mais pourquoi ce script marche sur le site et pas sur ma page web ??)