allora, opera (se ben ricordo) non supporta l' oncontextmenu quindi non si può fare nulla
x quanto riguarda ie con doctype valido l' ho sistemato
codice:
var ie5 = (document.getElementById&&document.all);
var n6 = (document.getElementById&&!document.all);
var ieValid = (ie5 && document.compatMode!="BackCompat");
var x,y,el,pageW,pageH,scrollX,scrollY;
var fade_index = 0;
if (n6) document.addEventListener("mouseup",showMenu,false);
if (ie5) document.attachEvent("oncontextmenu",showMenu);
if (ie5) document.attachEvent("onclick",showMenu);
function showMenu(e) {
if(!e) e = window.event;
if (document.getElementById) {
pageW=(window.innerWidth)?window.innerWidth:(ieValid)?document.documentElement.offsetWidth:document.body.offsetWidth;
pageH=(window.innerHeight)?window.innerHeight:(ieValid)?document.documentElement.offsetHeight:document.body.offsetHeight;
scrollX=(window.pageXOffset)?window.pageXOffset:(ieValid)?document.documentElement.scrollLeft:document.body.scrollLeft;
scrollY=(window.pageYOffset)?window.pageYOffset:(ieValid)?document.documentElement.scrollTop:document.body.scrollTop;
x=e.clientX
y=e.clientY
el=document.getElementById("menu");
if ((ie5&&e.type=="contextmenu")||(n6 && e.which>1)) {
if ((x+parseInt(el.offsetWidth))>=pageW) {
x -= parseInt(el.offsetWidth);
}
if ((y+parseInt(el.offsetHeight))>=pageH) {
y -= parseInt(el.offsetHeight);
}
el.style.top=y+scrollY+"px";
el.style.left=x+scrollX+"px";
fadeIn();
return false;
}
if ((ie5&&e.type=="click")||(n6 && e.which==1)) {
el.style.visibility="hidden";
fade_index = 0;
}
}
}
document.oncontextmenu=new Function("return false") ;
function fadeIn() {
if(ie5 || n6) {
document.getElementById('menu').style.visibility = 'visible';
if(ie5) {
document.getElementById('menu').filters.alpha.opacity = fade_index;
}
if(n6) {
document.getElementById('menu').style.MozOpacity = fade_index/100;
}
fade_index += 3;
goIn = setTimeout("fadeIn()", 50);
if(fade_index >= 100)
clearTimeout(goIn);
}
}
sinceramente non mi è chiara la parte del click sinistro
(poi azzererei l' opacità prima di far apparire il menù altrimenti appare sfumato solo la prima volta)
ma se così funziona come vuoi tu non è un problema
:ciauz: