Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > jQuery
jQuery Forum d'entraide sur le framework jQuery. Avant de poster : Tutoriels jQuery, FAQ jQuery, Tous les tutoriels JavaScript, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 15/01/2012, 17h55   #1
Membre habitué
 
Avatar de Darkyl
 
Homme
autodidacte en recherche d'emploi
Inscription : novembre 2004
Messages : 274
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : autodidacte en recherche d'emploi

Informations forums :
Inscription : novembre 2004
Messages : 274
Points : 106
Points : 106
Par défaut Jquery et scroll

Bonjour,

J'ai programmé un petit script pour un site web. Ce script gère un plan d'un hameau qui est affiché dans une iframe.

Le script marche bien sous Firefox et Ie mais pas sous chrome ni Mac (je ne sais pas quel navigateur).

Le problème vient de cette fonction qui me déplace le plan avec les scroll
Code :
1
2
3
4
5
6
7
8
9
10
11
12
 
function bouge(x,y)
{
 
plan.document.documentElement.scrollLeft = plan.document.documentElement.scrollLeft + x;	
plan.document.documentElement.scrollTop = plan.document.documentElement.scrollTop + y;
			bougeminiature(plan.document.documentElement.scrollLeft,plan.document.documentElement.scrollTop);
 
				plan.$('#coordxvue').val(plan.document.documentElement.scrollLeft);
				plan.$('#coordyvue').val(plan.document.documentElement.scrollTop);
 
}
J'ai essayer de remplacer par
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 
function bouge(x,y)
{
 
 
alert(self.$('#plan').scrollLeft());
 
posx=self.$('#plan').scrollLeft()+x;
posy=self.$('#plan').scrollTop()+y;
 
alert(self.$('#plan').scrollLeft()+" - "+self.$('#plan').scrollTop());
 
$('#plan').scrollLeft(posx);
$('#plan').scrollTop(posy);
 
 
				bougeminiature(plan.document.documentElement.scrollLeft,plan.document.documentElement.scrollTop);
 
				plan.$('#coordxvue').val(plan.document.documentElement.scrollLeft);
				plan.$('#coordyvue').val(plan.document.documentElement.scrollTop);
 
 
		}
mais cela ne marche pas...
Code :
alert(self.$('#plan').scrollLeft());
me renvoie 0 alors que le plan est centré dans ma frame, donc scrollleft ne vaut pas 0.

Cela fait deux jours que je galère. Je pensais qu'en passant par JQUERY pour les scroll, cela me résoudrait les problèmes de navigateurs...

Si quelqu'un a une idée...
Merci
__________________
Darkyl, celui qui conduit quand il boit pas .(faudra penser passer le permis )
Darkyl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2012, 19h16   #2
Membre chevronné
 
Homme Krusty
Inscription : mai 2009
Messages : 472
Détails du profil
Informations personnelles :
Nom : Homme Krusty
Localisation : France

Informations forums :
Inscription : mai 2009
Messages : 472
Points : 617
Points : 617
pour les navigateurs de la famille webkit (chrome et safarie) le scroll est recupéré dans document.body et pour les autres dans document.documentElement il faudrait faire un teste de navigateurs et adapter la fonctionselon le navigateur.
__________________
programmer n'est pas connaitre tous les moindres détails d'un langage mais savoir exploiter sous toutes ses facettes ce que l'on connait.
mekal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2012, 19h44   #3
Membre habitué
 
Avatar de Darkyl
 
Homme
autodidacte en recherche d'emploi
Inscription : novembre 2004
Messages : 274
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : autodidacte en recherche d'emploi

Informations forums :
Inscription : novembre 2004
Messages : 274
Points : 106
Points : 106
ha lala...

C'est si simple des fois...

Je te remercie beaucoup, je n'avais pas trouvé cette information.
Je vais testé cela ce soir.
Je marquerai résolu si ça marche...merci beaucoup
__________________
Darkyl, celui qui conduit quand il boit pas .(faudra penser passer le permis )
Darkyl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2012, 21h08   #4
Membre habitué
 
Avatar de Darkyl
 
Homme
autodidacte en recherche d'emploi
Inscription : novembre 2004
Messages : 274
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : autodidacte en recherche d'emploi

Informations forums :
Inscription : novembre 2004
Messages : 274
Points : 106
Points : 106
Ca ne me dit pas pourquoi
Code :
self.$('#plan').scrollLeft()
me renvoie 0.... JQUERY se charge de la différence entre navigateurs non?
__________________
Darkyl, celui qui conduit quand il boit pas .(faudra penser passer le permis )
Darkyl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2012, 10h24   #5
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 808
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 808
Points : 35 789
Points : 35 789
$('#plan'), ça correspond à quoi ?
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2012, 10h46   #6
Membre habitué
 
Avatar de Darkyl
 
Homme
autodidacte en recherche d'emploi
Inscription : novembre 2004
Messages : 274
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : autodidacte en recherche d'emploi

Informations forums :
Inscription : novembre 2004
Messages : 274
Points : 106
Points : 106
plan.document.documentElement.scrollLeft
=
$('#plan').scrollLeft()

la première marche, pas la seconde...
plan est une frame.

Merci d'avoir déplacer le sujet, j'avais pas trouvé le forum jquery...
__________________
Darkyl, celui qui conduit quand il boit pas .(faudra penser passer le permis )
Darkyl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2012, 10h54   #7
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 13 808
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 41
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : juin 2008
Messages : 13 808
Points : 35 789
Points : 35 789
Citation:
plan.document.documentElement.scrollLeft
=
$('#plan').scrollLeft()
Ca c'est un peu présomptueux comme affirmation

Si je suppose bien à quoi correspondent les éléments, plan serait une iframe.
Ce qui signifie que
Code :
plan.document.documentElement
correspond au contenu de cette iframe (qui peut donc avoir un scrollLeft), alors que
correspond à la balise iframe, qui est un élément remplacé et donc pour laquelle scrollLeft n'existe pas.
__________________
Pas de question technique par MP !
Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi !
Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
Mon livre sur jQuery
Bovino est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2012, 11h02   #8
Membre habitué
 
Avatar de Darkyl
 
Homme
autodidacte en recherche d'emploi
Inscription : novembre 2004
Messages : 274
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : autodidacte en recherche d'emploi

Informations forums :
Inscription : novembre 2004
Messages : 274
Points : 106
Points : 106
j'ai bien compris que $('#plan') n'était pas égal à plan.document.getelementbyID,
j'avais déjà posté un message sur un sujet similaire.

J'ai parcouru le web et votre site,
et je lis à chaque fois :
$('#nomframe').scrollLeft();

j'en conclus donc que c'est la bonne syntaxe en jquery et que cela devrait me renvoyer le scrollLeft...
__________________
Darkyl, celui qui conduit quand il boit pas .(faudra penser passer le permis )
Darkyl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2012, 11h04   #9
Membre habitué
 
Avatar de Darkyl
 
Homme
autodidacte en recherche d'emploi
Inscription : novembre 2004
Messages : 274
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : autodidacte en recherche d'emploi

Informations forums :
Inscription : novembre 2004
Messages : 274
Points : 106
Points : 106
je crois deviner où tu veux en venir. scrollLeft est une propriété CSS en jquery,
non?
Il le traite comme top et left?

()
__________________
Darkyl, celui qui conduit quand il boit pas .(faudra penser passer le permis )
Darkyl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2012, 13h19   #10
Invité régulier
 
Inscription : juin 2007
Messages : 12
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 12
Points : 5
Points : 5
Salut Darkyl !
essaies ça, on ne sais jamais ...
Code :
1
2
3
4
5
6
7
8
function bouge(x,y){
	var elt=($.browser.safari)?plan.document.body:plan.document.documentElement;
	elt.scrollLeft+=x;
	elt.scrollTop+=y;
	bougeminiature(elt.scrollLeft,elt.scrollTop);
	plan.$('#coordxvue').val(elt.scrollLeft);
	plan.$('#coordyvue').val(elt.scrollTop);
}
jamestout est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2012, 14h07   #11
Membre habitué
 
Avatar de Darkyl
 
Homme
autodidacte en recherche d'emploi
Inscription : novembre 2004
Messages : 274
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : autodidacte en recherche d'emploi

Informations forums :
Inscription : novembre 2004
Messages : 274
Points : 106
Points : 106
Merci Jérémie,

Cette solution marche très bien. J'ai mis à jours et ça marche nickel sur IE, FF et chrome. J'ai pas pu tester d'autre navigateur.

Tu vois quand tu veux .

Cela ne répond toujours pas à ma question:

Comment avec JQUERY récupérer la valeur d'un scroll d'une page et comment lui en affecter...?

Sans passer par la détection de navigateur car j'ai lu que cette détection n'était pas forcément sûr à 100% .

Même si tu te sers de JQUERY pour la détection...
Peut être jquery ne permet pas l'accés au scroll.

Mais ta solution marche très bien, elle est élégante et concise, bref j'aurais pas pu l'inventer...
Merci encore.

Je vais attendre de voir si on me répond à ma question sur JQUERY avant de mettre résolu.
__________________
Darkyl, celui qui conduit quand il boit pas .(faudra penser passer le permis )
Darkyl est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2012, 15h54   #12
Invité régulier
 
Inscription : juin 2007
Messages : 12
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 12
Points : 5
Points : 5
Citation:
Comment avec JQUERY récupérer la valeur d'un scroll d'une page et comment lui en affecter...?
si tu passes par des iframes tu ne peux pas, jQuery récupèrera le noeud correspondant à ta frame, mais pas le code de la page qu'elle contient (enfin je crois)

Citation:
Sans passer par la détection de navigateur car j'ai lu que cette détection n'était pas forcément sûr à 100% .
Ah ? je ne suis pas au courant, mais sinon, pour detecter le navigateur, il y a plusieurs techniques (certaines fonctions ou éléments ne sont pas tout fait identiques ou pas placé au même endroit, donc en faisant des tests dessus.

un petit résolu ?
jamestout est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2012, 18h34   #13
Membre habitué
 
Avatar de Darkyl
 
Homme
autodidacte en recherche d'emploi
Inscription : novembre 2004
Messages : 274
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : autodidacte en recherche d'emploi

Informations forums :
Inscription : novembre 2004
Messages : 274
Points : 106
Points : 106
oui un petit résolu, mais c'est bien parce que c'est toi.
D'accord je passerai plus (ou moins) par des frames.

AJAX me voilà.

Merci pour tes réponses et merci à BOVINO aussi pour son amorce de réflexion.

Je pensais JQUERY capable de la même chose que javascript sans passer par la syntaxe habituel, Qu'il donnait accès au même propriétés . Mais c'est une réflexion de novice, donc surement fausse.

Merci encore
__________________
Darkyl, celui qui conduit quand il boit pas .(faudra penser passer le permis )
Darkyl est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h43.


 
 
 
 
Partenaires

Hébergement Web