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

jQuery Discussion :

Transformer liens youtube en iframe


Sujet :

jQuery

  1. #1
    Membre éclairé Avatar de fazpedro
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 506
    Par défaut Transformer liens youtube en iframe
    Bonjour,
    j'essaie de transformer des liens youtube sur une page en iframe...

    voici le code qui fonctionne pour un lien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <script type="text/javascript"><!-- DEBUT script pour liens youtube -->
    $(document).ready(function () 
    {
    	$("a[href^='http://www.youtube']").each( function () 
    		{
    				$(this).html(function(i, html) {
    						return html.replace(i, "<iframe width='300' height='150' src='https://www.youtube-nocookie.com/embed/1234567890' frameborder='0' allowfullscreen></iframe>");	
    						}); 
    		});
    });
    </script><!-- FIN script pour liens youtube -->
    et je voudrais le faire pour tous les liens présents sur la page et là rien ne se passe...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <script type="text/javascript"><!-- DEBUT script pour liens youtube -->
    $(document).ready(function () 
    {
    	$("a[href^='http://www.youtube']").each( function () 
    		{
    			val source_youtube = $(this).val();
    				$(this).html(function(i, html) {
    						return html.replace(i, "<iframe width='300' height='150' src='source_youtube' frameborder='0' allowfullscreen></iframe>");	
    						}); 
    		});
    });
    </script><!-- FIN script pour liens youtube -->
    je dois pas être loin, mais je dois avoir oublié un truc ?
    Merci.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Par défaut
    Hello,

    tu n'envoies pas la variable source_youtube dans ta ligne mais le texte source_youtube. il faudrait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    return html.replace(i, "<iframe width='300' height='150' src='" + source_youtube + "' frameborder='0' allowfullscreen></iframe>");

  3. #3
    Membre éclairé Avatar de fazpedro
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 506
    Par défaut
    Merci manu_71,
    code modifié mais qui me met des iframe mais sans rien dedans !
    au passage, j'avais mis val au lieu de var...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <script type="text/javascript"><!-- DEBUT script pour liens youtube -->
    $(document).ready(function () 
    {
    	$("a[href^='http://www.youtube']").each( function () 
    		{
    			var source_youtube = $(this).val();
    				$(this).html(function(i, html) {
    						return html.replace(i, "<iframe width='300' height='150' src='"+source_youtube+"' frameborder='0' allowfullscreen></iframe>");
    						}); 
    		});
    });
    </script><!-- FIN script pour liens youtube -->

  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 659
    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 659
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var source_youtube = $(this).val();
    depuis quand une balise a-t-elle un value ???
    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
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Par défaut
    ha oui j'avais pas fait attention au reste du code.
    Tu récupères val() de ta balise <a>... Il faut récupérer le href donc.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $(this).attr("href")

  6. #6
    Membre éclairé Avatar de fazpedro
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 506
    Par défaut
    j'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    			var source_youtube = $(this).attr("href");
    mais c'est pareil !

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 162
    Par défaut
    Je ne suis pas sûr de moi (je suis pas un expert) mais il me semble que ta variable n'est pas disponible dans ta fonction suivante (portée locale). Tu peux tester ça avec des alert(source_youtube) (un juste après avoir déclarer ta variable pour voir si déjà tu récupères bien le href et un autre juste avant ton return pour voir si elle est dispo à cet endroit). Si le problème vient de là, soit tu passes ta variable dans ta function, soit tu peux la déclarer de manière implicite (sans utiliser var)...

  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 659
    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 659
    Billets dans le blog
    1
    Par défaut
    ceci pourrait théoriquement fonctionner...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $("a[href^='http://www.youtube']").each(function(){
    source= $(this).attr('href');
    swap=$('<iframe/>').attr('src',source).css({"height": "200px","width":"300px", "border":"solid 1px red"});
    $(this).after(swap);
    alert(swap.attr('scr'))
    $(this).remove();   
    })
    MAIS youtube ne permet pas de framer les liens directemlent de la sorte il faut passer par un lien embed ...

    En approfondissant un peu on peut recuperer la ref de la video en param v du get et concatener un nouveau lien embed pour youtube qui cette fois fonctionne en src d'un iframe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $(function(){
    $("a[href^='http://www.youtube']").each(function(){
    source="http://www.youtube.com/embed/"+$(this).attr('href').match(/v=([^&]+)/)[1];
    alert(source)
    swap=$('<iframe/>').attr('src',source).css({"height": "200px","width":"300px", "border":"solid 1px red"});
    $(this).replaceWith(swap)  
    })
    })
    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
    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 659
    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 659
    Billets dans le blog
    1
    Par défaut
    testé avec
    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
    <!DOCTYPE HTML>
    <html>
    <head>
    <title>Nouvelle page 1</title>
    <style type="text/css">
    </style>
    <script type='text/javascript' src="http://code.jquery.com/jquery.js"></script>
    <script type='text/javascript'>
     
    $(function(){
    $("a[href^='http://www.youtube']").each(function(){
    source="http://www.youtube.com/embed/"+$(this).attr('href').match(/v=([^&]+)/)[1];
    swap=$('<iframe/>').attr('src',source).css({"height": "200px","width":"300px", "border":"solid 1px red"});
    $(this).replaceWith(swap)  
    })
    })
    </script>
    </head>
    <body>
    <a href="http://www.youtube.com/watch?v=6XA0uZcDO9Y&feature=youtu.be">tortue</a>
    <a href="http://www.youtube.com/watch?v=2gyxeXW_2T8">mike</a>
    <a href="http://www.youtube.com/watch?v=RylxBtEM0sI">hip hop uke</a>
    </body>
    </html>
    Au passage appréciez la seconde video ...
    La dernière est dangereuse !!
    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 !

  10. #10
    Membre éclairé Avatar de fazpedro
    Homme Profil pro
    Inscrit en
    Août 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 506
    Par défaut
    Merci SpaceFrog : cela fonctionne à merveille !

    Code :
    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(){
    $("a[href^='http://www.youtube']").each(function(){
    source="https://www.youtube-nocookie.com/embed/"+$(this).attr('href').match(/v=([^&]+)/)[1];
    swap=$('<iframe />').attr('src',source).css({"height": "150x","width":"250px", "border":"solid 4px red","border":"0", "margin":"0", "padding":"0"});
    $(this).replaceWith(swap)  
    })
    })
    </script>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Supprimer tous les iframes contenant un lien youtube
    Par jameson dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 23/12/2013, 19h17
  2. Problème de lien dans une iframe
    Par leloup84 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 22/03/2006, 11h19
  3. ouvrir un lien dans un iframe avec JS
    Par -DeN- dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 27/01/2006, 12h05
  4. Réponses: 1
    Dernier message: 06/12/2005, 20h44

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