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 :

images, css et liens : relatif => absolu


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2011
    Messages : 12
    Par défaut images, css et liens : relatif => absolu
    Bonjour !

    Je vous explique mon problème en espérant trouver de l'aide ici
    Je dois réaliser un javascript (je pensais à une regex mais c'est un point faible pour moi ) qui :
    Etant donné une chaine - code html -, recherche tous les liens relatifs des img, css et liens href et y ajoute le nom de domaine "http://www.monsite.com/" afin de les passer en absolu.

    Ex :
    - <img src="toto.jpg"> est réecrit en <img src="http://www.monsite.com/toto.jpg">
    - <a href="page1.html"> est réecrit en <a href="http://www.monsite.com/page1.html">

    Ceci en prevoyant des quotes simples/doubles, les écritures avec ou sans éspace, ect...

    Merci par avance !

  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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <script type="text/javascript">
    function replacecallback(){
    alert(arguments[3])
    return (arguments[1]+arguments[3].match(/(\w+\.\w+)$/)[0]+'"')
    }
     
    var chaine='<img src="toto.jpg"> est réecrit en <img src="http://www.monsite.com/totpoo.jpg"><a href="page1.html"> est réecrit en <a href="http://www.monsite.com/page1.html">';
    var res=chaine.replace(/((src|href)=")([^"]*)"/g, function(f,b,m,e){return replacecallback(f,b,m,e)})
    alert(res)
    </script>
    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
    Invité
    Invité(e)
    Par défaut
    je penserait plutot a quelquechose comme ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function change(){
     
    var allElements = document.getElementsByTagName('img');
    for (var i = 0; i< allElements.length; i++){
    allElements[i].src="http://www.monsite.com/"+allElements[i].src
    }
    var allElements = document.getElementsByTagName('a');
    for (var i = 0; i< allElements.length; i++){
    allElements[i].href="http://www.monsite.com/"+allElements[i].href
     
    }
    }

  4. #4
    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
    Etant donné une chaine
    tu veux traiter une chaine ou le code html de ta page .?
    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 !

  5. #5
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    en fait, si j'ai bien lu, c'est "une chaîne" et entre tirets "code html";

    d'où ma réponse généralisante;

  6. #6
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    var im=document.images, lnk=document.links;
    var racine="http://monsite/";
    for(i in im){
    	im[i].adr=im[i].src;
    	im[i].src=racine+im[i].adr
    }
     
    for(i in lnk){
    	lnk[i].adr=im[i].src;
    	lnk[i].href=racine+lnk[i].adr
    }

    mince je me suis fait devancé
    Dernière modification par Deepin ; 31/03/2011 à 14h14. Motif: Remplacer la balis [QUOTE] par [CODE]

  7. #7
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2011
    Messages : 12
    Par défaut
    Hello,

    Tout d'abord merci pour vos réponses
    C'est effectivement une chaine qui contient le code html d'une page.
    exemple (la chaine réelle est beaucoup plus étoffée):
    var chaine = '<html><head></head><body> mon image <img src = "image.jpg"></body></html>';

    Sinon le code suivant, ne me donne pas grand chose
    D'ailleurs, je ne vois pas où est ce que l'on précise la partie "http://www.monsite.com/" à ajouter à la chaine afin d'obtenir une adresse absolue:

    Citation Envoyé par SpaceFrog Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <script type="text/javascript">
    function replacecallback(){
    alert(arguments[3])
    return (arguments[1]+arguments[3].match(/(\w+\.\w+)$/)[0]+'"')
    }
     
    var chaine='<img src="toto.jpg"> est réecrit en <img src="http://www.monsite.com/totpoo.jpg"><a href="page1.html"> est réecrit en <a href="http://www.monsite.com/page1.html">';
    var res=chaine.replace(/((src|href)=")([^"]*)"/g, function(f,b,m,e){return replacecallback(f,b,m,e)})
    alert(res)
    </script>
    Merci par avance.

  8. #8
    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
    ha c'est l'inverse
    là je retire le http

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <script type="text/javascript">
    function replacecallback(){
    alert(arguments[3])
    return ("http://www.monsite.com/"+arguments[1]+arguments[3].match(/(\w+\.\w+)$/)[0]+'"')
    }
     
    var chaine='<img src="toto.jpg"> est réecrit en <img src="http://www.monsite.com/totpoo.jpg"><a href="page1.html"> est réecrit en <a href="http://www.monsite.com/page1.html">';
    var res=chaine.replace(/((src|href)=")([^"]*)"/g, function(f,b,m,e){return replacecallback(f,b,m,e)})
    alert(res)
    </script>
    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 !

  9. #9
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2011
    Messages : 12
    Par défaut
    Hello,

    On est pas loin

    - 1) Pour une image en relatif, il y a un soucis :
    J'obtiens <img http://www.monsite.com/src="toto.jpg"> au lieu de <img src="http://www.monsite.com/toto.jpg">

    - 2) Deux autres soucis :
    a) Je ne dois pas toucher aux images et liens qui ont déjà chemin absolu : "http://www.monsite.com/toto.jpg" ou "http://www.autresite.com/toto.jpg"

    b) Et ne pas supprimer les dossiers dans le chemin relatif src="page1/toto.jpg" devient src="http://www.monsite.com/page1/toto.jpg"

    Mais à part ça tout va bien



    Citation Envoyé par SpaceFrog Voir le message
    ha c'est l'inverse
    là je retire le http

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <script type="text/javascript">
    function replacecallback(){
    alert(arguments[3])
    return ("http://www.monsite.com/"+arguments[1]+arguments[3].match(/(\w+\.\w+)$/)[0]+'"')
    }
     
    var chaine='<img src="toto.jpg"> est réecrit en <img src="http://www.monsite.com/totpoo.jpg"><a href="page1.html"> est réecrit en <a href="http://www.monsite.com/page1.html">';
    var res=chaine.replace(/((src|href)=")([^"]*)"/g, function(f,b,m,e){return replacecallback(f,b,m,e)})
    alert(res)
    </script>

  10. #10
    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
    pour le 1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <script type="text/javascript">
    function replacecallback(){
    alert(arguments[3])
    return (arguments[1]+"http://www.monsite.com/"+arguments[3].match(/(\w+\.\w+)$/)[0]+'"')
    }
     
    var chaine='<img src="toto.jpg"> est réecrit en <img src="http://www.monsite.com/totpoo.jpg"><a href="page1.html"> est réecrit en <a href="http://www.monsite.com/page1.html">';
    var res=chaine.replace(/((src|href)=")([^"]*)"/g, function(f,b,m,e){return replacecallback(f,b,m,e)})
    alert(res)
    </script>
    pour le 2) faut que je reflexionnasse
    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 !

  11. #11
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 684
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 684
    Par défaut
    devrait fonctionner si tu as bien tous tes liens en relatif;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    var im=document.images, lnk=document.links;
    var racine="http://monsite/";
    for(i in im){
    	im[i].adr=im[i].src;
    	im[i].src=racine+im[i].adr
    }
     
    for(i in lnk){
    	lnk[i].adr=im[i].src;
    	lnk[i].href=racine+lnk[i].adr
    }

Discussions similaires

  1. CSS et lien relatif
    Par sanfour_walhan dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 20/09/2011, 21h06
  2. [HTML] Choix du lien (relatif ou absolu) où l'utilisateur sera dirigé
    Par J3r3My dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 13/08/2008, 14h21
  3. [XHTML] Pb avec lien relatif et lien absolu
    Par trotters213 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 13/09/2006, 13h38
  4. [CSS] alignement lien/image
    Par speedev dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 14/06/2006, 11h28
  5. [CSS] Mélange positionnement relatif et absolu
    Par sinok dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 01/06/2006, 17h20

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