11548 sujets

JavaScript, DOM et API Web HTML5

Bien le bonjour,
J'avais récemment créé des infobulles entièrement en CSS, qui marchaient très bien, mais qui n'étaient finalement pas adaptées à mon projet. Je souhaitais par exemple que l'infobulle suive le curseur.

J'ai donc fouillé à droite et à gauche pour récupérer des bouts de code de javascript.

Au final ça donne ça :

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<style type="text/css">

#global {
	background-image: url(fond_global.jpg);
	height: 640px;
	width: 800px;
	margin-right: auto;
	margin-left: auto;
	position: relative;
}


a {
	height: 50px;
	width: 250px;
	position: absolute;
	background-color: #00FF00;
}

.popup {
	position: relative;
	visibility: hidden;
}

.infobulle {
	background-image: url(infobulle.png);
	background-repeat: no-repeat;
	height: 150px;
	width: 271px;
	padding-top: 30px;
	padding-right: 5px;
	padding-bottom: 5px;
	padding-left: 5px;
}


.elvis {
    top: 100px;
	left: 100px;
}

.dunhill {
    top: 200px;
	left: 200px;
}


</style>
</head>
<body>
<div id="global">
<div class=popup id=popbox></div>
<script type="text/javascript">
if (document.getElementById){
box = document.getElementById("popbox").style;
if(navigator.appName.substring(0,3) == "Net")
document.captureEvents(Event.MOUSEMOVE);
document.onmousemove = pointer;
}
function poplink(contenu){
var content ="<div class=infobulle>"+contenu+"</div>";
if (document.getElementById)
{
document.getElementById("popbox").innerHTML =
content;
box.visibility = "visible";
}
}
function pointer(e)
{
var x = (navigator.appName.substring(0,3) == "Net") ? e.pageX : event.x+document.body.scrollLeft;
var y = (navigator.appName.substring(0,3) == "Net") ? e.pageY : event.y+document.body.scrollTop;
box.left = x+20;
box.top = y+20;
}
function closepopup()
{
if (document.getElementById)
box.visibility = "hidden";
}
</script>
<a class="elvis" href="" onMouseOver="poplink('<img src=\'CD_Elvis.jpg\' alt=\' \'>Elvis, le plus grand rocker de tous les temps ? Ben tiens...');" onmouseout="closepopup()" ></a>
<a class="dunhill" href="" onMouseOver="poplink('<img src=\'dunhill_3D.jpg\' alt=\' \'>Fumer c est mal. Tr&egrave;s mal. Tr&egrave;&egrave;&egrave;&egrave;&egrave;&egrave;&egrave;s tr&egrave;s mal !');" onmouseout="closepopup()" ></a>
</div>
</body>
</html>


Ça marche plutôt pas mal, mis à part :
-Impossible de déclarer le doctype, sinon pffiuut, ça ne marche plus.
-Les infobulles ne sont pas placées relativement aux liens, mais au navigateur et ça, ça me dépasse. Par conséquent, elles n'apparaissent pas au même endroit suivant la taille de la fenêtre.
-Je ne peux pas mettre de caractères spéciaux dans le texte des mes popups (enfin en tous cas dès que je mets une apostrophe, l'infobulle n'apparait plus)

Hm, je pense que c'est tout. Pourriez vous me donner un coup de patte ?

Voici un lien vers ce que je tente de faire : http://www.raphael-bigot.info/admin/hebergements/poplink/poplink.html
(la forme n'a aucun intérêt, hein, c'est juste un test pour comprendre comment ça marche Smiley smile )
Modifié par Ralf (21 Mar 2009 - 23:18)
Parce que je ne sais pas faire (j'ai tout de même essayer de reprendre les codes html css et js de l'exemple de mootool, ça ne marchait pas).

Donc je préfère rester dans ce que je peux à peu près comprendre. Quelqu'un peut me dépanner ?
Merci, mais comme je le précisais, je sais déjà faire des infobulles en CSS, et ça ne correspond pas à mes besoins.