Problème onscroll sous IE [Résolu]

slashf 87 Messages postés vendredi 24 mars 2006Date d'inscription 14 janvier 2011 Dernière intervention - 25 nov. 2010 à 16:54 - Dernière réponse : PetoleTeam 3435 Messages postés lundi 26 décembre 2005Date d'inscription 14 janvier 2011 Dernière intervention
- 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 

17 réponses

Répondre au sujet
@karamel 1655 Messages postés vendredi 9 mai 2008Date d'inscription 19 avril 2018 Dernière intervention - 6 déc. 2010 à 16:33
+3
Utile
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> 
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de @karamel
PetoleTeam 3435 Messages postés lundi 26 décembre 2005Date d'inscription 14 janvier 2011 Dernière intervention - 25 nov. 2010 à 18:11
0
Utile
Bonjour,
un copier/coller et un test rapide plus tard, je ne vois pas de soucis !

;O)
Commenter la réponse de PetoleTeam
slashf 87 Messages postés vendredi 24 mars 2006Date d'inscription 14 janvier 2011 Dernière intervention - 25 nov. 2010 à 18:14
0
Utile
salut, j'ai utilisé sous IE 8, et toi ?
Commenter la réponse de slashf
PetoleTeam 3435 Messages postés lundi 26 décembre 2005Date d'inscription 14 janvier 2011 Dernière intervention - 25 nov. 2010 à 18:29
0
Utile
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
slashf 87 Messages postés vendredi 24 mars 2006Date d'inscription 14 janvier 2011 Dernière intervention - 25 nov. 2010 à 18:38
0
Utile
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
PetoleTeam 3435 Messages postés lundi 26 décembre 2005Date d'inscription 14 janvier 2011 Dernière intervention - 25 nov. 2010 à 18:42
0
Utile
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
slashf 87 Messages postés vendredi 24 mars 2006Date d'inscription 14 janvier 2011 Dernière intervention - 25 nov. 2010 à 18:56
0
Utile
nada, toujours rien !!! j'ai passé ma journée sur google mais sans résultat :(
Commenter la réponse de slashf
PetoleTeam 3435 Messages postés lundi 26 décembre 2005Date d'inscription 14 janvier 2011 Dernière intervention - 25 nov. 2010 à 19:03
0
Utile
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
slashf 87 Messages postés vendredi 24 mars 2006Date d'inscription 14 janvier 2011 Dernière intervention - 25 nov. 2010 à 19:15
0
Utile
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
PetoleTeam 3435 Messages postés lundi 26 décembre 2005Date d'inscription 14 janvier 2011 Dernière intervention - 25 nov. 2010 à 19:26
0
Utile
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
slashf 87 Messages postés vendredi 24 mars 2006Date d'inscription 14 janvier 2011 Dernière intervention - 25 nov. 2010 à 19:43
0
Utile
mummm y'a pas un problème au niveau de ? vu qu'en lien ça passe ?
Commenter la réponse de slashf
PetoleTeam 3435 Messages postés lundi 26 décembre 2005Date d'inscription 14 janvier 2011 Dernière intervention - 25 nov. 2010 à 20:18
0
Utile
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
slashf 87 Messages postés vendredi 24 mars 2006Date d'inscription 14 janvier 2011 Dernière intervention - 6 déc. 2010 à 19:03
0
Utile
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
PetoleTeam 3435 Messages postés lundi 26 décembre 2005Date d'inscription 14 janvier 2011 Dernière intervention - 8 déc. 2010 à 09:45
0
Utile
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
@karamel 1655 Messages postés vendredi 9 mai 2008Date d'inscription 19 avril 2018 Dernière intervention - 8 déc. 2010 à 22:42
0
Utile
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
slashf 87 Messages postés vendredi 24 mars 2006Date d'inscription 14 janvier 2011 Dernière intervention - 8 déc. 2010 à 23:40
0
Utile
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
PetoleTeam 3435 Messages postés lundi 26 décembre 2005Date d'inscription 14 janvier 2011 Dernière intervention - 10 déc. 2010 à 10:57
0
Utile
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.