1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
| function divCommentaire(elementRacine, texte, offsetX, offsetY) {
var divC = document.createElement("DIV");
elementRacine.appendChild(divC);
divC.id = "divCom_" + elementRacine.id.substr(4);
divC.className = "divCom";
divC.style.display = "none";
elementRacine.addEventListener("mouseover", ecouteur_commentaire, false);
elementRacine.addEventListener("mouseout", ecouteur_commentaire, false);
var positionRelative = elementRacine.posXY();// tableau à 2 postes : [positionX, positionY]
divC.style.left = (positionRelative[0] - 150 + offsetX) + 'px';// -150 = moitié de la largeur du div ( pour centrage )
divC.style.top = (positionRelative[1] + 10 + offsetY) + 'px';// +10 = simple ajustement pour l'harmonie de l'affichage
// écriture du contenu
var spanTexte = document.createElement("SPAN");
divC.appendChild(spanTexte);
spanTexte.setAttribute("class","spanCom");
spanTexte.appendChild(document.createTextNode(texte));
}
// FONCTION : calcul de la position absolue d'un élément (dans la fenêtre)
// RETOUR : tableau à 2 postes : coordonnées [X, Y] en entiers
Element.prototype.posXY = function() {
var tabPosition = new Array();
var feuille = this;
tabPosition[0] = feuille.offsetLeft;
tabPosition[1] = feuille.offsetTop;
while(feuille.offsetParent) {
feuille = feuille.offsetParent; // récursivité
tabPosition[0] += feuille.offsetLeft;
tabPosition[1] += feuille.offsetTop;
}
return tabPosition;
}
function ecouteur_commentaire(e) {
var spanSource = e.target;
var numCom = spanSource.id.substr(4);
var com = document.getElementById("divCom_" + numCom);
if (com && e.type == "mouseover") {
com.style.display = "block";
spanSource.style.backgroundColor = "#999";
}
if (com && e.type == "mouseout") {
com.style.display = "none";
spanSource.style.backgroundColor = "";
}
} |
Partager