allora, questo è il codice nella pagina relativo all'oggetto che deborda:
codice:
....
<div class="cartello" id="cartello_numeroCartello">
contenuto testuale (un striga tipo A1, A2 ecc.)
</div>
....
la funzione javascript che si occupa di posizionare i vari cartelli è posionaCartello:
codice:
...
//Posiziona i cartelli con il nome della paritzione
function posizionaCartelli(){
divs = document.getElementsByTagName("div");
for(i=0;i<divs.length;i++){
splittedId = divs.item(i).id.split("_");
if(splittedId[0] == "cartello"){
codice = splittedId[1];
rif = document.getElementById("rif_cartello_"+codice);
cart = divs.item(i);
rifPosition = getPosition(rif);
cartPosition = centraCartello(rifPosition[0], rifPosition[1], rif.offsetWidth, rif.offsetHeight, cart.offsetWidth, cart.offsetHeight);
cart.style.left = cartPosition[0]+"px";
cart.style.top = cartPosition[1]+"px";
if(isIEBrowser())
cart.className="cartelloIE";
}
}
}
//Restituisce la posizione dell'emento passato
function getPosition(theElement){
positionX = 0;
positionY = 0;
while (theElement != null){
positionX += theElement.offsetLeft;
positionY += theElement.offsetTop;
theElement = theElement.offsetParent;
}
return [positionX, positionY];
}
//Restituisce le cordinate del cartello centrato sul centro dell'elemento di riferimento
function centraCartello(rifPositionX, rifPositionY, rifWidth, rifHeight, cartWidth, cartHeight){
centroRifX = rifPositionX + rifWidth/2;
centroRifY = rifPositionY + rifHeight/2;
cartPositionX = centroRifX - cartWidth/2;
cartPositionY = centroRifY - cartHeight/2;
return [cartPositionX, cartPositionY];
}
//Ritorna true se sta usando IE altrimenti false
function isIEBrowser(){
browserName=navigator.appName;
if (browserName=="Microsoft Internet Explorer")
return true;
return false;
}
...
questo è il css dei cartelli
codice:
...
/*Cartello*/
div.cartello{
width: 35px;
height: 35px;
position: absolute;
text-align: center;
background-image: url("/MeteoWebModule/imgCentraline/sfondoAut.jpg");
}
div.cartelloIE{
width: 35px;
height: 35px;
line-height: 35px;
position: absolute;
text-align: center;
background-image: url("/MeteoWebModule/imgCentraline/sfondoAut.jpg");
}
...
A vederlo così sembrà chissà chè.... ma sostanzialmente prende le coordinate di un elemento sullo pagina e posiziona il cartello su quell'elemento centrandolo.
L'unica differenza tra IE e Firefox è nella definizione del css, in IE c'è line-heigt altrimenti non mi centra verticalmente il testo.