IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

[DOM] iframe - obtenir la donnée sélectionnée


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 61
    Par défaut [DOM] iframe - obtenir la donnée sélectionnée
    bonjour,

    je veux obtenir en Javascript, la donnée que l'utilisateur sélectionne dans une <iframe>

    pour cela, j'utilise la fonction getSelection() qui marche très bien

    le problème est que je ne sais pas quel événement utiliser sur mon iframe pour exécuter la fonction Javascript dès que l'utilisateur a fait sa sélection dans l'iframe ???

    ni 'onblur', ni 'onmouseup' ne fonctionne :-(

    merci pour ce forum très utile !!!

    fabrisss

  2. #2
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par défaut
    euh tu selectionne quoi ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 61
    Par défaut
    l'utilisateur est censé pouvoir sélectionner n'importe quel texte apparaissant dans la page chargée dans l'iframe

    exemple : le titre d'un forum, le prix d'un article, un lien...

    mon problème n'est pas lié à la nature des données sélectionnées mais plutôt à l'événement qui devrait déclenché après la sélection dans l'iframe

  4. #4
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par défaut
    pour ie tu as le onselectstart sur document, sinon apres ca sera sur le onmousedown du document aussi

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 61
    Par défaut
    j'oubliais de préciser une info importante : je n'ai pas accès en écriture aux pages chargées dans l'iframe car ce sont des pages provenant de sites externes (n'importe quelle page du web en fait...)

    donc je ne peux pas ajouter de gestionnaire d'événements (onclick, on mouseup...etc) dans la page de l'iframe

  6. #6
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par défaut
    ben tu peux tenter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <iframe onmousedown="debutselection" onclick="finselection" ...>

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 61
    Par défaut
    merci pour ta proposition mais cela ne marche pas...

    ceci, par contre, fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <body onclick="getSel();">
    mais n'est pas vraiment acceptable car il faut cliquer sur la page 'parent', après la sélection dans l'iframe, pour déclencher la fonction Javascript :-(

  8. #8
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868

  9. #9
    Membre Expert
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Par défaut
    <body onclick="getSel();">
    Sinon tu peux faire quelque chose comme cela depuis la page contenant la iframe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    <html>
     
    <head></head>
     
    <body>
     
    <iframe id="yo" src="b.html" ></iframe>
     
    <script  language="javascript" type="text/javascript"> 
    document.getElementById("yo").contentWindow.document.onclick = function () 
    { 
    alert("Yo C'est Moi  ");
    } 
    </script> 
     
    </body>
     
    </html>
    Ou bien plus simplement directement dans l'iframe (qui est une page web comme une autre) :
    <body onclick="getSel();">
    Ensuite tu peux communiquer entre la page appelante et la page appelée sans souci avec window.parent par exemple, ou le comme plus au dessus par exemple.

  10. #10
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par défaut
    il n'est pas propriétaire de la page se trouvant dans l iframe

  11. #11
    Membre Expert
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Par défaut
    Il peut toujours faire cela dans ce cas bien précis.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <script  language="javascript" type="text/javascript"> 
    document.getElementById("yo").contentWindow.document.onclick = function () 
    { 
    alert("Yo C'est Moi  "); 
    } 
    </script>
    J'ai mis onclick mais bon il mets ce qu'il veut comme evenement

  12. #12
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par défaut
    oui oui cette solution est certainement bonne,
    en fait j'utilise les ifrmae mais pas pour ce à quoi elles sont destinées

    c'est soit pour communiquer avec le serveur, mais maintenant avec xhr je le fais plus.

    soit pour la mettre derrière un div car ie gère pas les div au dessus des select.

  13. #13
    Membre Expert
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Par défaut
    soit pour la mettre derrière un div car ie gère pas les div au dessus des select.
    Pf tu métonnes c'est trop la plaie ca !


    tu t'en sers comment de tes iframe :

  14. #14
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par défaut
    ben en général je la crée dynamiquement avec le dom (createElement) et je la place derrière mon div (meme coordonnées mais un z-index plus petit).

    Car in peut mettre une iframe devant un select et un div devant une iframe

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 61
    Par défaut
    j'obtiens l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    document.getElementById("yo") has no properties
    j'ai aussi essayé avec document.getElementById("yo").contentDocument ou document.getElementById("yo").document

    cela ne marche ni sous IE, ni sous Mozilla :-(

  16. #16
    Membre Expert
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Par défaut
    ben en général je la crée dynamiquement avec le dom (createElement) et je la place derrière mon div (meme coordonnées mais un z-index plus petit).

    Car in peut mettre une iframe devant un select et un div devant une iframe
    Sa c'est un bon truc à savoir ;p

    j'obtiens l'erreur suivante :
    Code:

    document.getElementById("yo") has no properties



    j'ai aussi essayé avec document.getElementById("yo").contentDocument ou document.getElementById("yo").document

    cela ne marche ni sous IE, ni sous Mozilla
    Normal ton iframe doit avoir un id particulier et c'est id que tu vas cibler avec la methode getElementById().

    Dans mon la iframe avait l'id yo.

    A toi de l'adapter

  17. #17
    Expert confirmé
    Avatar de siddh
    Inscrit en
    Novembre 2005
    Messages
    3 868
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Novembre 2005
    Messages : 3 868
    Par défaut
    t as mis un id="yo" a ton iframe au moins ?

  18. #18
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 61
    Par défaut
    évidemment, mon iframe possède un attribut 'id' et 'name' dont la valeur vaut 'yo'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <iframe id="yo" name="yo" src="http://..."></iframe>

  19. #19
    Membre Expert
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Par défaut
    Ben sa devrait fonctionner.... File une peu plus de code on pourrait mieux t'aider.

  20. #20
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 61
    Par défaut
    voici mon code Javascript :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    var IFrameDoc;
    var IFrameObj = document.getElementById('yo');
     
    if(IFrameObj.contentDocument)
    {
    	IFrameDoc = IFrameObj.contentDocument.document;
    }
    else if(IFrameObj.contentWindow)
    {
    	IFrameDoc = IFrameObj.contentWindow.document;
    }
    else if(IFrameObj.document)
    {
    	IFrameDoc = IFrameObj.document;
    }
    else
    {
    	alert("error");
    }
     
    IFrameDoc.onclick = function ()
    {
    	alert("ok");
    }
    ...et mon iframe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <iframe id="yo" name="yo" width="800" height="600" src="http://..."></iframe>
    ...et le msge d'erreur de la console JS :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Error: IFrameObj has no properties
    pour info, aucun "alert" ne s'affiche car le script se plante certainement dans le 1er "if"

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [DOM] Iframe vide après déplacement dans le dom
    Par echataig dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 06/07/2007, 15h54
  2. [pERl TK] Obtenir le texte sélectionné d'un widget entry
    Par dreydrey dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 18/01/2007, 09h18
  3. Réponses: 1
    Dernier message: 20/12/2005, 15h56
  4. [C#][ProgressBar]Obtenir les données depuis un autre objet
    Par Kcirtap dans le forum Windows Forms
    Réponses: 7
    Dernier message: 26/10/2005, 11h56
  5. Réponses: 4
    Dernier message: 30/03/2005, 18h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo