Coordonnées +SCROLL

batmanu Messages postés 27 Date d'inscription samedi 1 mai 2004 Statut Membre Dernière intervention 19 février 2006 - 17 févr. 2006 à 22:41
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 - 25 févr. 2006 à 15:28
Bonjour,

alors voilà, je cherche à récupérer les coordonnées de ma souris, oui mais...
je voudrais aussi y ajouter la différence de scrolling de la fenêtre pour que ça soit bien au bon endroit vu que c'est calqué sur les coordonnées de la souris.

voici mon code:
function ici() {
Xpos = event.clientX + document.body.scrollLeft
Ypos = event.clientY + document.body.scrollTop;
}

mais document.body.scrollLeft (et Top) restent constant malgrès le déplacement de la barre de scroll.

j'ai tout retourné, il y a sûrement quelquechose qui m'échappe...
a l'aide plize :)

9 réponses

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
18 févr. 2006 à 10:07
Bonjour,
si je lis bien, normalement c'est bon, enfin avec IE.
un peu plus de code c'est possible ?
Cordialement. Bul. ~ Mon Site qu'il est à Moi ~<FO>
</FO>
</S< body>
0
batmanu Messages postés 27 Date d'inscription samedi 1 mai 2004 Statut Membre Dernière intervention 19 février 2006
18 févr. 2006 à 12:04
Bonjour,
pour toi, tout est possible, je cherche à afficher une infobulle en survol de lien, voici les fonctions et l'appel (je ne comprends pas pourquoi ça ne marche pas):

<head>
var chaine = "

"+"<Layer name='text' left='4' top='80' width='100' height='16'></Layer>";
document.write(chaine);


bname = navigator.appName;
var Xpos = 0;
var Ypos = 0;
bversion = parseInt(navigator.appVersion);
var ebulle = 0;


if (bname == "Netscape") {
brows = true;
}
else {
brows = false;
}


if(brows) {
document.captureEvents(Event.MOUSEMOVE);
function MouveA(evnt) {//netscape
Xpos = evnt.pageX + window.pageXOffset;
Ypos = evnt.pageY + window.pageYOffset;
}
document.onMouseMove = MouveA;
}
else {
function MouveB() {//ie ---- //mystère de cotes à éclaircir, ça bouge quand on scroll dans la page: il ne prend pas en compte le scrolling dans la page
Xpos = event.clientX + document.body.scrollLeft;//visiblement le deuxième terme reste constant
Ypos = event.clientY + document.body.scrollTop;//visiblement le deuxième terme reste constant
}
document.onmousemove = MouveB;
}


function bubulle() {
var cx;
var cy;
cx = Xpos + 16;
cy = Ypos - 16;
if (brows) {
document.text.left = cx;
document.text.top = cy;
}
else {
document.all.text.style.left = cx;
document.all.text.style.top = cy;
}
setTimeout("bubulle()", 10);
}


function bulle(texte) {
if (ebulle == 0) {
if (brows) {//netscape
document.layers['text'].document.writeln('<nobr>'+texte+'</nobr>
');
document.layers['text'].document.close();
}
else {//ie
text.innerHTML = '<nobr>'+texte+'</nobr>
';
}
ebulle = 1;
}
}


function cbulle() {
if (brows) {
document.layers['text'].document.writeln('');
document.layers['text'].document.close();
}
else {
text.innerHTML = '';
}
ebulle = 0;
}
</head>

le texte est mis directement dans l\'appel
de fonction et c\'est très pratique.

Il faut juste bien penser aux apostrophes
et redimentionner correctement la bulle
avec des sauts de ligne en html.')" onmouseout="cbulle()">lien avec bulle en survol 01


<map name="#2"></map>
le texte est mis directement dans l\'appel
de fonction et c\'est très pratique.

Il faut juste bien penser aux apostrophes
et redimentionner correctement la bulle
avec des sauts de ligne en html.')" onmouseout="cbulle()">lien avec bulle en survol 02


<map name="#3"></map>

Ca marche quand il n'y a pas de scroll, dès qu'on bouge, ça décale tout: c'est un vrai mystère.
merci pour ton aide :)
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
18 févr. 2006 à 12:47
Bonjour,
désolé...ça marche sans aucun souci avec IE ( je craignais de ne plus savoir lire )
"faut-y" regarder avec le renard de feu ( je ne l'ai pas fait ) ?

<head>
<script type="text/javascript">
var chaine = "

"+"<Layer name='text' left='4' top='80' width='100' height='16'></Layer>";
document.write(chaine);


bname = navigator.appName;
var Xpos = 0;
var Ypos = 0;
bversion = parseInt(navigator.appVersion);
var ebulle = 0;


if (bname == "Netscape") {
brows = true;
}
else {
brows = false;
}


if(brows) {
document.captureEvents(Event.MOUSEMOVE);
function MouveA(evnt) {//netscape
Xpos = evnt.pageX + window.pageXOffset;
Ypos = evnt.pageY + window.pageYOffset;
}
document.onMouseMove = MouveA;
}
else {
function MouveB() {//ie ---- //mystère de cotes à éclaircir, ça bouge quand on scroll dans la page: il ne prend pas en compte le scrolling dans la page
Xpos = event.clientX + document.body.scrollLeft;//visiblement le deuxième terme reste constant
Ypos = event.clientY + document.body.scrollTop;//visiblement le deuxième terme reste constant
}
document.onmousemove = MouveB;
}


function bubulle() {
var cx;
var cy;
cx = Xpos + 16;
cy = Ypos - 16;
if (brows) {
document.text.left = cx;
document.text.top = cy;
}
else {
document.all.text.style.left = cx;
document.all.text.style.top = cy;
}
setTimeout("bubulle()", 10);
}


function bulle(texte) {
if (ebulle == 0) {
if (brows) {//netscape
document.layers['text'].document.writeln('<nobr>'+texte+'</nobr>
');
document.layers['text'].document.close();
}
else {//ie
text.innerHTML = '<nobr>'+texte+'</nobr>
';
}
ebulle = 1;
}
}


function cbulle() {
if (brows) {
document.layers['text'].document.writeln('');
document.layers['text'].document.close();
}
else {
text.innerHTML = '';
}
ebulle = 0;
}
</script>
</head>



<script type="text/javascript">
for ( var n=0;n<100;n++ )
document.writeln(n+"
");
</script>
le texte est mis directement dans l\'appel
de fonction et c\'est très pratique.

Il faut juste bien penser aux apostrophes
et redimentionner correctement la bulle
avec des sauts de ligne en html.')" onmouseout="cbulle()">lien avec bulle en survol 01


<map name="#2"></map>
le texte est mis directement dans l\'appel
de fonction et c\'est très pratique.

Il faut juste bien penser aux apostrophes
et redimentionner correctement la bulle
avec des sauts de ligne en html.')" onmouseout="cbulle()">lien avec bulle en survol 02


<map name="#3"></map>



Cordialement. Bul. ~ Mon Site qu'il est à Moi ~<FO>

</FO>
</S< body>
0
batmanu Messages postés 27 Date d'inscription samedi 1 mai 2004 Statut Membre Dernière intervention 19 février 2006
18 févr. 2006 à 13:30
tu as essayé en rajoutant des br en quantité à la fin pour simuer une page plus longue ?
pour moi, ça ne marche ni sous ie6 ni sous ie5, ni sous firefox, quand à ma vieille version de safari sous mac elle est à l'agonie...
comprends pas.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
18 févr. 2006 à 16:19
>>tu as essayé en rajoutant des br en quantité à la fin pour simuer une page plus longue ?
oui bien sûr.
moi : PC, Windows XP sp2 tout à jour, Internet Explorer 6.
mais j'avais testé, en son temps, avec Windows 98...
scroll??? n'existent pas depuis hier, il me semble
a-t-on tout ?
Cordialement. Bul. ~ Mon Site qu'il est à Moi ~<FO>
</FO>
</S< body>
0
batmanu Messages postés 27 Date d'inscription samedi 1 mai 2004 Statut Membre Dernière intervention 19 février 2006
19 févr. 2006 à 13:30
ben oui, on a tout, c'est un bien grand mystère, je vais essayer de mettre en ligne, peut être que le décalage vers le haut va disparaitre?
je vais éplucher également le reste du fichier des fois que j'ai une variable qui fasse deux choses à la fois...
0
batmanu Messages postés 27 Date d'inscription samedi 1 mai 2004 Statut Membre Dernière intervention 19 février 2006
19 févr. 2006 à 13:57
je n'ai rien trouvé, c'est sûrement le reste du code qui fait interférence, je t'enverais bien le code complet, on pourait faire ça en mail direct?
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
19 févr. 2006 à 15:16
soit donner l'adresse où on peut voir, en ligne
soit me l'envoyer effectivement par mail, et
on promet de mettre la réponse ici, si on trouve...
mon mail : marcel point bultez arobase tiscali point fr
à priori l'erreur vient sûrement d'ailleurs ?
Cordialement. Bul. ~
Mon Site qu'il est à Moi ~
<FO>
</FO>
</S< body>
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
25 févr. 2006 à 15:28
comme de bien entendu, jai pommé tes coordonnées
et j'ai fait un ch'tit exemple qui gère ce "scroll"
donc je le poste ici, comme on avait dit qu'on donnerait les pistes..
mais il faudra corriger les erreurs de script dans ce que
tu m'as envoyé ( que j'ai sucré aussi !!! )

<html>
<head>
<!--#### fonctions+provoquer le scroll ####--><script type="text/javascript">


for ( var n=0;n<100;n++ ) //#### ça c'est pour provoquer le scroll ####
{
document.writeln(n+"
");
}

function cache() //#### cache l'info bulle ####
{
b.style.display="none";
}

function montre() //#### place et montre l'info bulle ####
{
if (ie) { //#### ici c'est IE ####
b.style.left=event.x+document.body.scrollLeft;
b.style.top=event.y+document.body.scrollTop;
}
else { //#### et là... les autres ####
b.style.left=evt.pageX;
b.style.top=evt.pageY;
}
b.style.display="inline";
}

</script>
</head>

<!--#### ça c'est une info bulle par exemple #### -->

exemple de texte

mais on y met ce qu'on veut

du html, des images...

<!--#### la "zone" pour laquelle faire une info bulle ####-->

<!--#### initialisation ####--><script type="text/javascript">
var b=document.getElementById("bulle");
var ie = false; Mon Site qu'il est à Moi ~<FO>

</FO>
</S< body>
0
Rejoignez-nous