Klarade millennium-buggen
|
|
Reg.datum: May 2006
Inlägg: 2 604
|
|
Klarade millennium-buggen
Reg.datum: May 2006
Inlägg: 2 604
|
Den osynliga div:en laddas vid laddning av sidan. Sen visas den genom att man kopplar ett script till eventet onmouseover för visning och onmouseout för att ta bort den igen. Till exempel genom att ändra z-index.
Positioneringen sker genom att man läser av musens position och där finns det lite att klura med emedan de olika webbläsarna har egna uppfattningar om hur musens positionen ska registreras.
Koden kan typ se ut så här för att fånga musens position:
// set dynamic coords
function get_mouse(e)
{
var x,y;
if(nav || n_6) x=e.pageX;
if(iex) x=event.x+document.body.scrollLeft;
if(nav || n_6) y=e.pageY;
if(iex)
{
y=event.y;
if (document.documentElement && !document.documentElement.scrollTop) y+=0;
else if (document.documentElement && document.documentElement.scrollTop) y+=document.documentElement.scrollTop;
else if (document.body && document.body.scrollTop) y += document.body.scrollTop;
}
if(iex || nav)
{
skin.top=y+yyy;
skin.left=x+Xoffset;
}
if(n_6)
{
skin.top=(y+yyy)+"px";
skin.left=x+Xoffset+"px";
}
nudge(x);
}
// avoid edge overflow
function nudge(x)
{
var extreme,overflow,temp;
// right
if(iex) extreme=(document.body.clientWidth-popwidth);
if(n_6 || nav) extreme=(window.innerWidth-popwidth);
if(parseInt(skin.left)>extreme)
{
overflow=parseInt(skin.left)-extreme;
temp=parseInt(skin.left);
temp-=overflow;
if(nav || iex) skin.left=temp;
if(n_6)skin.left=temp+"px";
}
// left
if(parseInt(skin.left)<1)
{
overflow=parseInt(skin.left)-1;
temp=parseInt(skin.left);
temp-=overflow;
if(nav || iex) skin.left=temp;
if(n_6)skin.left=temp+"px";
}
}
|