Bonjour à tous,

En jQuery, j'essayes de faire un scrollTo vers un élément du DOM mais cet élément se trouve dans un iframe.
Visiblement, j'arrive à bien cicler (sélectioner) l'iframe mais pas les éléments à l'intérieur de celui-ci. Ca parait en effet logique vu qu'il appel une page/contenu extérieur.

Est-ce que quelqu'un a une solution ou une piste pour mon problème?

D'avance merci pour votre aide.

hachbé

5 réponses


Soundboy39
Réponse acceptée

Solution non testée faite avec des bouts de codes trouvés sur le web

var domElement = $("#myiframe").contents().find("#myContent");
$("#myiframe").scrollTo(domElement.offset().top);

Merci de nous tenir au courant

hachbe
Auteur

Merci Soundboy39. Je vais tester ça et je dis si ça a fonctionné :)

hachbe
Auteur

Hello,

Malheureusement, ça ne fonctionne pas :(
Il me retourne ce message d'erreur dans la consoloe: "domElement.offset(...) is undefined"
J'ai bien précisez les selecteurs.

Je vais essayer de trouver une autre solution ou si quelqu'un en a une je suis prenneur :)

Il existe des plugins JS qui permettent de faire des choses interessantes autour du scroll sur les élements HTML, j'en avais trouvé 1 pour automiser le scroll sur les DIV mais je ne remet pas la main dessus... fais des recherches sur les sites comme Github.

Sinon j'ai une idée comme çà..., c'est un peu crado mais çà peut être fonctionner :

  1. tu créer une DIV vide avec une hauteur max (une pseudo iframe en quelque sorte...)
  2. tu copie le HTML de l'iframe (que tu cache en css) et tu le colle dans la DIV (par le biais des différentes méthodes que te propose jQuery)

Normalement il y a un plugin qui permet d'automatiser le scroll sur les DIV si çà ne focntionne pas en natif...
A tester si personne n'a mieux à proposer

hachbe
Auteur

Merci Soundboy39 pour ton aide, mais mon problème était finalement plus complexe que ça.
En effet, la plateforme qui appelait mon composant dans un iframe est dans un tout autre environement.
Dès lors il a fallut ajouter du JS pour communiquer entre les deux et envoyer les infos au main frame.

C'est finalement un de mes collègues balaize en JS qui s'en est occupé, donc je ne serais dire ce qu'il a fait précisement :)

Merci pour les solutions proposés et d'avoir pris le temps pour m'aider.