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 :

Récupération bloc HTML sous Firefox


Sujet :

JavaScript

  1. #1
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 55
    Par défaut Récupération bloc HTML sous Firefox
    Bonjour à tous !

    J'ai besoin de récupérer un bloc HTML sous Firefox.

    eval(nom).document.getSelection() me permet de récupérer le texte que je sélectionne.

    eval(nom) est une iframe

    eval(nom).document.body.innerHTML me permet de récupérer la version HTML


    Je pensais utiliser un truc style "parentNode" mais ça ne passe pas sous Firefox.


    Pourriez-vous m'aider ?

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    parent.nomframe ....
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 55
    Par défaut
    En fait, sous IE je fais :

    var tr = eval(nom).document.selection.createRange()

    tr est donc un textRange.

    Je peux alors faire : tr.parentElement

    J'aimerais, à partir de eval(nom).document sous Firefox, récupérer un textRange qui corresponde au texte que j'ai sélectionné.

    Je pourrais ensuite utiliser parentElement.

    Je suis passé par la méthode getSelection sous Firefox mais on ne récupère pas d'objet textRange.

    Y a-t-il une astuce ?

  4. #4
    Membre Expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Par défaut
    Ce que tu cherches à faire n'a pas vraiment d'équivalent FF...
    FF ne permet pas de manipuler la sélection.

    Cependant, pour le document, sur FF, on fait : iframe.contentDocument

  5. #5
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 55
    Par défaut
    Tu veux dire qu'à partir du texte sélectionné, il est impossible de le mettre dans un objet TextRange ?

    Sinon, je ne vois pas ce que tu veux dire par :

    "Cependant, pour le document, sur FF, on fait : iframe.contentDocument"

  6. #6
    Membre Expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Par défaut
    A)
    Oui... tu peux bien faire document.getSelection qui te retourne une chaine de caractère avec le TEXTE sélectionné, et c'est tout... textRange, c'est du IE-Only...

    B)
    Ben sous FireFox, tu dois faire eval(nom).contentDocument

  7. #7
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    Citation Envoyé par cradleofpain
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var tr = eval(nom).document.selection.createRange()
    cette syntaxe me semble étrange

    J'écrirais plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    var tr = eval(nom+".document.selection.createRange()");

  8. #8
    Membre Expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532

  9. #9
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 55
    Par défaut
    J'ai essayé d'utiliser ta fonction getHTMLOfSelection mais ça ne me retourne rien !

    ça me semble un peu compliqué par rapport au résultat que j'attend.

    Sinon, window.ActiveXObject permet de tester si c'est sous IE, c'et bien ça ?

    Est-ce que je dois utiliser eval(nom) à la place de window dans le code ?


    Pour répondre à "Auteur", la syntaxe ne pose pas de problème à priori.

  10. #10
    Membre Expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Par défaut
    Ben c'est simple, avec ce code tu dois faire pareil sous FF et sous IE...
    (N'oublie pas de mettre ce script dans ta frame, ainsi que dans toutes les pages de ton site, évidemment)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var textRange = eval(nom).document.selection.createRange();
    var parentElement = textRange.parentElement();
    getHTMLOfSelection() ne marche que pour FF. Il sert à générer textRange.htmlText;

  11. #11
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 55
    Par défaut
    Dans la partie de mon code exécutée par FF, j'ai mis un alert("getHTML : " + getHTMLOfSelection()).

    Il ne me renvoi rien et sort en fait au premier

    else{
    return '';
    }

    Est-ce que je dois pas passer "nom" en paramètre afin de faire un
    eval(nom).document.getSelection plutot que window.getSelection() ?


    Quand tu dis de mettre le script dans la FRAME, tu veux dire quoi exactement ?
    Entre les balises <IFRAME>, en propriété de cette balise ???

  12. #12
    Membre Expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Par défaut
    Citation Envoyé par cradleofpain
    Quand tu dis de mettre le script dans la FRAME, tu veux dire quoi exactement ?
    Entre les balises <IFRAME>, en propriété de cette balise ???
    Ben non, dans la page qu'il y a dans l'iframe... exemple dans IFRAME.HTML

    Et tu dois ensuite faire comme tu faisait pour IE, sans modification

  13. #13
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 55
    Par défaut
    En fait, le code se trouve dans un fichier js appelé par la page ou se trouve ma frame.

    C'est une fonction dans mon js qui doit appeler getHTMLOfSelection() que j'ai mis aussi dans le js.

  14. #14
    Membre Expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Par défaut
    Bon, attends, je vois que tu comprends pas ce que je veux dire donc je vais essayer d'être plus clair:

    INDEX.HTML
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ...
    <script src="DOCUMENT.SELECTION.JS"></script>
    ...
    <iframe src="IFRAME.HTML" ... ></iframe>
    ...
    <script><!--
    ...
    var tr = eval (nom).document.selection.createRange();
    ...
    --></script>
    ...
    IFRAME.HTML
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ...
    <script src="DOCUMENT.SELECTION.JS"></script>
    ...

  15. #15
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 55
    Par défaut
    J'ai oublié de te préciser que j'utilise des jsp et pas des HTML.


    Sinon, pourquoi la boucle qui commence par :

    if (!document.selection && document.getSelection) {

    n'est pas dans une fonction ? A quel endroit dois-je la mettre ?


    Voici un peu l'architecture de mon fichier js :

    La fonction E() doit utiliser :

    var textRange = eval(aName).document.selection.createRange();

    La fonction getHTMLOfSelection est située au dessus de la fonction E().

    Dans la fonction E(), j'ai mis toute la boucle :

    if (!document.selection && document.getSelection) {

    Je n'arrive toujours pas à utiliser la fonction createRange() !

    Ni la fonction RangeCount !

  16. #16
    Membre Expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Par défaut
    Tu ne dois rien faire de spécial
    Tu prends mon script sans toucher à quoi que ce soit.
    Tu le copies. Tu crée un fichier document.selection.js. Tu colles. Tu sauvegarde. Tu l'ajoutes à ton document HTML et c'est fini

  17. #17
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 55
    Par défaut
    Je vais essayer. Par contre, j'ai vu que tu avais modifié le fichier auquel on accède via le lien que tu as mis.

    Est-ce que je prend cette nouvelle version ou est-ce que je dois garder l'ancienne ?

  18. #18
    Membre Expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Par défaut
    Prend la nouvelle, c'est mieux

  19. #19
    Membre averti
    Inscrit en
    Avril 2007
    Messages
    55
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 55
    Par défaut
    Merci.

    Celà fonctionne mais il me reste un problème :

    J'ai besoin d'exécuter la ligne :

    eval(aName).document.execCommand("CreateLink")

    FF me dit "not enough arguments".

    J'ai essayé eval(aName).document.execCommand("CreateLink",true) et
    eval(aName).document.execCommand("CreateLink",true,'')

    Mais là il passe pas.

    Existe-t-il une alternative ?

  20. #20
    Membre Expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Par défaut
    Ton document est bien en designMode = "on" ?

    Si oui alors je suis confus et je ne comprends pas... mais en tout cas ca n'as rien à voir avec mon script

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

Discussions similaires

  1. editeur html sous firefox
    Par 63renaud dans le forum Firefox
    Réponses: 12
    Dernier message: 13/02/2010, 01h07
  2. [HTML] HTML problème d'affichage sous firefox
    Par poupouny dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 12/12/2006, 13h40
  3. Réponses: 3
    Dernier message: 10/05/2006, 10h54
  4. [HTML]alt / title pour les images, liens sous firefox
    Par cynferdd dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 27/10/2005, 16h39
  5. [HTML]Image qui ne s'affiche pas sous firefox...
    Par OrangeBud dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 13/10/2004, 13h42

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