Problème onscroll sous IE [Résolu]

Messages postés
87
Date d'inscription
vendredi 24 mars 2006
Dernière intervention
14 janvier 2011
- 25 nov. 2010 à 16:54 - Dernière réponse :
Messages postés
3435
Date d'inscription
lundi 26 décembre 2005
Dernière intervention
14 janvier 2011
- 10 déc. 2010 à 10:57
bonjour à toutes et à tous je vous explique mon cas, se que je voudrai faire c qu'à chaque scroll un message alert s'affiche avec la position, ça marche sur tt les navigateur sauf sur IE
voici le code :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<script type="text/javascript">
function pos() {
d=document.documentElement.scrollTop;
alert(d);
}
</script>
</head>
































[# clic]

</html>

lorsque je clic sur le bouton "clic" ça marche mais se que je veux faire c qu'à chaque scroll un message alert apparaît avec la position mecri de m'éclairé ^^
Afficher la suite 

Votre réponse

17 réponses

Meilleure réponse
Messages postés
1663
Date d'inscription
vendredi 9 mai 2008
Dernière intervention
3 novembre 2018
- 6 déc. 2010 à 16:33
3
Merci
le probleme vient que pour ie il faut ajoutre l'evenement dans document.documentElement (head) et pour les autres dans document

il y a aissi une autre difference mais ce coup ci pour les navigateurs webkit (chrome safari) qui recetionne la valeurs dans document.body (le body)et pour les autres c'est dans document.documentElement (le head)

non non c'est pas du tout galere

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<script type="text/javascript">
function pos(){
if(navigator.vendor){
var d=document.body.scrollTop;
}
else{
var d=document.documentElement.scrollTop;
}
alert(d);
}


if(navigator.appName.substring(0,5)=="Micro"){
document.documentElement.onscroll=pos
}
else{
document.onscroll=pos
}

</script>
</head>


 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


[# clic]

</html> 

Merci @karamel 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 88 internautes ce mois-ci

Commenter la réponse de @karamel
Messages postés
3435
Date d'inscription
lundi 26 décembre 2005
Dernière intervention
14 janvier 2011
- 25 nov. 2010 à 18:11
0
Merci
Bonjour,
un copier/coller et un test rapide plus tard, je ne vois pas de soucis !

;O)
Commenter la réponse de PetoleTeam
Messages postés
87
Date d'inscription
vendredi 24 mars 2006
Dernière intervention
14 janvier 2011
- 25 nov. 2010 à 18:14
0
Merci
salut, j'ai utilisé sous IE 8, et toi ?
Commenter la réponse de slashf
Messages postés
3435
Date d'inscription
lundi 26 décembre 2005
Dernière intervention
14 janvier 2011
- 25 nov. 2010 à 18:29
0
Merci
gagné, ce n'est pas IE8 que j'utilise...
essaies cela
window.onscroll = function(){
 alert( document.documentElement.scrollTop);
}

à la place de
 

;O)
Commenter la réponse de PetoleTeam
Messages postés
87
Date d'inscription
vendredi 24 mars 2006
Dernière intervention
14 janvier 2011
- 25 nov. 2010 à 18:38
0
Merci
non rien ne se passe :s foutu internet explorer il faut toujours qu'il nous embête avec leur trucs !!!!
t'as pas une autre solution ? :(
Commenter la réponse de slashf
Messages postés
3435
Date d'inscription
lundi 26 décembre 2005
Dernière intervention
14 janvier 2011
- 25 nov. 2010 à 18:42
0
Merci
essaies avec ce DOCTYPE
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

;O)
Commenter la réponse de PetoleTeam
Messages postés
87
Date d'inscription
vendredi 24 mars 2006
Dernière intervention
14 janvier 2011
- 25 nov. 2010 à 18:56
0
Merci
nada, toujours rien !!! j'ai passé ma journée sur google mais sans résultat :(
Commenter la réponse de slashf
Messages postés
3435
Date d'inscription
lundi 26 décembre 2005
Dernière intervention
14 janvier 2011
- 25 nov. 2010 à 19:03
0
Merci
peut être encore un essai avec
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title></title>
<style type="text/css">
html, body {
  height : 1000px;
}
</style>
<script type="text/javascript">
function Debug( txt_){
  document.getElementById('DEBUG').innerHTML += txt_;
}
window.onscroll = function(){
 Debug( document.documentElement.scrollTop +' - ');
}
</script>
</head>



[# clic]

</html>

on s'affranchit de l'alerte...

sinon sans IE8 je vais avoir du mal...
;O)
Commenter la réponse de PetoleTeam
Messages postés
87
Date d'inscription
vendredi 24 mars 2006
Dernière intervention
14 janvier 2011
- 25 nov. 2010 à 19:15
0
Merci
voilà se que j'ai comme affichage 4 - 5 - 10 - 21 - 33 - 44 - 55 - 67 - 78 - 90 - 90 - 104 - 117 - 129 - 142 - 155 - 167 - 180 - 180 - 165 - 153 - 140 - 128 - 115 - 102 - 90 - 90 - 75 - 63 - 50 - 38 - 25 - 13 - 0 - 0 - 4 -.....

en fait se que je veux faire au juste c d'afficher un div une fois que le scroll atteint une partie bien précise, sous chrome, mizilla, safari 0 problème mais sous IE rien ne marche !!!
Commenter la réponse de slashf
Messages postés
3435
Date d'inscription
lundi 26 décembre 2005
Dernière intervention
14 janvier 2011
- 25 nov. 2010 à 19:26
0
Merci
vu le résultat que tu obtiens, j'en conclu qu'il y a interaction avec le alert mais que cela fonctionne.

Le problème est donc ailleurs.

;O)
Commenter la réponse de PetoleTeam
Messages postés
87
Date d'inscription
vendredi 24 mars 2006
Dernière intervention
14 janvier 2011
- 25 nov. 2010 à 19:43
0
Merci
mummm y'a pas un problème au niveau de ? vu qu'en lien ça passe ?
Commenter la réponse de slashf
Messages postés
3435
Date d'inscription
lundi 26 décembre 2005
Dernière intervention
14 janvier 2011
- 25 nov. 2010 à 20:18
0
Merci
essaies le même code en mettant un alert à la place du Debug, et dit ce qui se passe !

;O)
Commenter la réponse de PetoleTeam
Messages postés
87
Date d'inscription
vendredi 24 mars 2006
Dernière intervention
14 janvier 2011
- 6 déc. 2010 à 19:03
0
Merci
super kazma ça marche super bien depuis le temps que je cherchais une solution :s encore une fois milles merci :D
Commenter la réponse de slashf
Messages postés
3435
Date d'inscription
lundi 26 décembre 2005
Dernière intervention
14 janvier 2011
- 8 déc. 2010 à 09:45
0
Merci
Bonjour,
le probleme vient que pour ie il faut ajoutre l'evenement dans document.documentElement (head) et pour les autres dans document
pas exactement!
si la source que tu lui as fournie fonctionne sur la page de slashf , c’est que celle-ci est en mode quirks, malgré le DOCTYPE qu’il a mis, la preuve en est que l’exemple que je lui ai soumis a fonctionné également.

slashf, penses à valider ton code à l’aide d’un validateur par exemple validator.w3, IE8 étant visiblement intraitable !

L’ajout de l’événement onscroll sur l’objet window est une chose implémenté depuis longtemps avec des dysfonctionnements ça et la, certes, aux cours des âges.

En mode quirks il faut effectivement récupérer la valeur du scroll sur le document.body alors qu’en mode respect des standards il se récupère sur le document.documentElement et ce pour tous les navigateurs

non non c'est pas du tout galere
Effectivement pour récupérer les valeurs de scroll, et ce quelque soit le type de rendu de la page il suffit de faire
function getScrollPage(){
  var iTop  = document.body.scrollTop || document.documentElement.scrollTop ||0;
  var iLeft = document.body.scrollLeft || document.documentElement.scrollLeft ||0;
  return( {top : iTop, left : iLeft});
}


quelques lectures qui peuvent intéresser...
http://www.quirksmode.org/dom/events/scroll.html
http://www.quirksmode.org/dom/events/index.html#t021
il en existe bien d'autres...

;O)
Commenter la réponse de PetoleTeam
Messages postés
1663
Date d'inscription
vendredi 9 mai 2008
Dernière intervention
3 novembre 2018
- 8 déc. 2010 à 22:42
0
Merci
j'ai ete voir sur le site et pour m'en persuadé j'ai fait un teste pour l'ajout de l'evenement et en gros pour la compatibilite meme si elle n'est pas totale le plus simple serait d'ajouter l'evenement sur window

quand a

function getScrollPage(){
  var iTop  = document.body.scrollTop || document.documentElement.scrollTop ||0;
  var iLeft = document.body.scrollLeft || document.documentElement.scrollLeft ||0;
  return( {top : iTop, left : iLeft});
}


j'ai du mal avec cette syntaxe j'ai peur que sa puisse cree une erreur mais je remarque qu' il a l'avantage de faire abstraction de la compatibile entre navigateurs donc c'est un bon point il me reste plus qu'a m'en persuadé
Commenter la réponse de @karamel
Messages postés
87
Date d'inscription
vendredi 24 mars 2006
Dernière intervention
14 janvier 2011
- 8 déc. 2010 à 23:40
0
Merci
avec la méthode de kazma ça marche avec tt les navigateurs ( IE, mozilla, safari, chrome ) je vous cache pas que je me sens out quand je lis vos commentaires lol moi je suis plus PHP que javascript ( je sais que je dois m'y mettre et au plus vite si je veux utiliser la technologie ajax :/ ) je vais me renseigner sur le mode quirks parce que pour être honnête je sais même se que c lol, encore une fois merci à vous deux :)
Commenter la réponse de slashf
Messages postés
3435
Date d'inscription
lundi 26 décembre 2005
Dernière intervention
14 janvier 2011
- 10 déc. 2010 à 10:57
0
Merci
Bonjour,
un petit test valant mieux que de longs discours
<script type="text/javascript">
  var szResult = "RESULTAT",
      Valeur,
      variable_1 = "valeur 1",
      variable_2 = "valeur 2",
      variable_3 = "valeur 3";
  Valeur = variable_1 || variable_2 || variable_3;
  szResult +"\nTest 1 " + Valeur;
  //--
  variable_1 = 0;
  Valeur = variable_1 || variable_2 || variable_3;
  szResult +"\nTest 2 " + Valeur;
  //--
  variable_2 = 0;
  Valeur = variable_1 || variable_2 || variable_3;
  szResult +"\nTest 3 " + Valeur;
  //--
  variable_3 = 0;
  Valeur = variable_1 || variable_2 || variable_3;
  szResult +"\nTest 4 " + Valeur;
  alert( szResult);
</script>
ATTENTION quand même cela ne fonctionne pas si une variable n'est pas définie...
Cela permet de remplacer les tests if( ){...} else{...} néanmoins plus pédagogiques

et pour le mode quirks à lire au minimum A propos du Modèle de boîte Microsoft (ou "quirks") chez alsacreations.

;O)
Commenter la réponse de PetoleTeam

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.