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 :

creation dynamique d'iframe


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 8
    Par défaut creation dynamique d'iframe
    Bonjour à tous et à toutes,

    La partie du code javascript suivant ne semble pas créer d'iframe. En tous cas, je ne la vois pas apparaitre.
    voici mon code:
    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
    26
    27
    28
    29
    30
    31
     
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>sign-optimhome</title>
    <script language="JavaScript" type="text/javascript"><!--
    function redirection () {
    	cadre=document.createElement("iframe");
    	cadre.setAttribute("src","http://www.un-site-web.com/");
    	cadre.setAttribute("width",100+"%");
    	cadre.setAttribute("height",1000+"px");
    	alert("php fonctionne");
    	document.body.appendChild(cadre);
    }
    </script>
    <?
    function trouve_hote($Adresse) {
       $hote= parse_url(trim($Adresse));
       return trim($hote[host] ? $hote[host] : array_shift(explode('/', $hote[path], 2)));
    }
    $site = "www.un-autre-site-web.com";
    $acces = trouve_hote($_SERVER['HTTP_REFERER']);
    if ($site == $acces) {
    	echo ("<script language=javascript>redirection();</script>");
    }else{
    	echo ("Vous n'avez pas d'autorisation pour lire cette page");
    }
    ?>
    </head>
     
    <body>
    </body>
    Ici, la boite de dialogue s'affiche, mais quand je place mon alert() à la fin du code javascript,elle ne s'affiche pas. J'en déduit donc que c'est le appendChild qui pose problème.
    Si quelqu'un à une solution. Voire une autre manière de porcéder, sachant que l'utilisateur doit venir d'un certain site web afin d'accéder à la page, et de plus il ne doit pas voir vers quel site il est redirigé.
    Ce n'est pas très efficace, mais c'est la seule manière que j'ai trouvé car le site cible est un cms, donc pas d'accès au code pour en restreindre l'accès.

    D'avance, merci.

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Si quelqu'un à une solution.
    Oui, essayer d'ajouter du contenu quand le body a été créé, parce qu'essayer de rajouter du contenu à un élément qui n'existe pas, ça marche moins bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script language=javascript>window.onload = redirection;</script>
    Et au passage, si tu pensais à refermer ta première balise <script>, ce serait pas plus mal
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Nouveau membre du Club
    Inscrit en
    Janvier 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 8
    Par défaut
    ok pour la fermeture de balise. c'est un oubli dans le post...

    Par contre je ne comprend pas bien ton code.
    Est-ce qu'il appelle la fonction?
    Elle est déja appelée par le script php.

  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 661
    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 661
    Billets dans le blog
    1
    Par défaut
    tu appelais ta fonction avant que le body ne soit instancié ...

    c'est à ça que sert le onload du body, attendre que tous les éléments soient créés et ainsi pouvoir les appeler avec javascript ..
    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
    Nouveau membre du Club
    Inscrit en
    Janvier 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 8
    Par défaut
    J'insère donc mon php dans le body. Tout simplement.

    Merci Mr spacefrog.

  6. #6
    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 661
    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 661
    Billets dans le blog
    1
    Par défaut
    heu non ...
    tu lances ta fonction une fois que tous les elements sont chargé pour le client ..
    ce qui n'a en gros pas grand chose à voir avec php
    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 !

  7. #7
    Nouveau membre du Club
    Inscrit en
    Janvier 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 8
    Par défaut
    Si si...
    Là on rentre dans mon domaine
    C'est php qui lance la fonction.
    Merci pour tout.
    Le code qui fonctionne:
    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
    26
    27
    28
    29
    30
    31
    32
     
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>sign-optimhome</title>
    <script language="JavaScript" type="text/javascript"><!--
    function redirection () {
    	cadre=document.createElement("iframe");
    	cadre.setAttribute("src","http://www.un-site-web.com/");
    	cadre.setAttribute("width",100+"%");
    	cadre.setAttribute("height",1000+"px");
    	alert("php fonctionne");
    	document.body.appendChild(cadre);
    }
    </script>
     
    </head>
     
    <body>
    <?
    function trouve_hote($Adresse) {
       $hote= parse_url(trim($Adresse));
       return trim($hote[host] ? $hote[host] : array_shift(explode('/', $hote[path], 2)));
    }
    $site = "www.un-autre-site-web.com";
    $acces = trouve_hote($_SERVER['HTTP_REFERER']);
    if ($site == $acces) {
    	echo ("<script language=javascript>redirection();</script>");
    }else{
    	echo ("Vous n'avez pas d'autorisation pour lire cette page");
    }
    ?>
    </body>

  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 661
    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 661
    Billets dans le blog
    1
    Par défaut
    Non je confirme...
    je connais aussi bien php
    php ne fait que rédiger le code html / js avant de l'envoyer chez le client ...
    en fait ta page pourrait etre en .html sans une goutte de php dedans que le problème serait le même

    la chronologie c'est interprétation php puis interpretation html/js puis dans ton cas comme ton js doit appeler des objets qui doivent etre instanciés ton js doit etre lancé une fois la page chargée donc dans le onload qui est un evènement client TOTALEMENT indépendant de php

    en aucun cas php ne peut lancer une fonction js vu que php est interprété coté serveur et js l'est coté client ...
    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

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par fabiwan07 Voir le message
    Si si...
    Là on rentre dans mon domaine
    C'est php qui lance la fonction.
    Euh... non, pas vraiment
    PHP écrit une balise HTML et c'est ce HTML qui sera interprété par ton navigateur et qui lancera la fonction JavaScript.
    Parce que si c'était PHP qui lançait la fonction, cela voudrait dire que ton JavaScript serait exécuté sur le serveur, ce qui n'a pas forcément d'intérêt
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  10. #10
    Nouveau membre du Club
    Inscrit en
    Janvier 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 8
    Par défaut
    On chipote là...

    echo ("<script language=javascript>redirection();</script>");
    Cad génération php d'un contenu html qui lance la fonction.

    Le code ci-dessus fonctionne parfaitement. Par contre, en effet, il était appelé alors trop tôt dans le <head>, le simple fait de le placer dans le body a résolu le problème.

    Si j'utilisait "onLoad", alors la page serait redirigée systématiquement, ce qui n'était pas l'idée.

    La chronologie: La page se charge, envoie la requête au serveur, celui-ci génère l'appel de la fonction javascript.

  11. #11
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par fabiwan07 Voir le message
    Si j'utilisait "onLoad", alors la page serait redirigée systématiquement, ce qui n'était pas l'idée.

    Par quel miracle ?

    Plus sérieusement, personne ne t'a dit que ta ligne était mauvaise, ce que l'on t'a dit (relis la réponse de Spaffy) c'est que ce n'est pas le code PHP qui lance la fonction mais le contenu HTML qu'il génère et qui est le seul reçu par l'interpréteur HTML. Ce n'est pas du chipotage, c'est au contraire la compréhension de comment se génère du contenu dynamique !
    Quant au onload, il s'agit juste d'un évènement JavaScript déclenché par les éléments remplacés lorsque le contenu de ceux-ci est disponible, il n'y a rien à voir avec une redirection.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  12. #12
    Nouveau membre du Club
    Inscrit en
    Janvier 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 8
    Par défaut
    N'est ce pas ce que - <script language=javascript>window.onload = redirection;</script> - fait? Appeler la fonction au chargement?

    Peut être ai-je mal expliqué le but de la manoeuvre. Mais je dis que php lance la fonction dans le sens où c'est la fonction php qui déterminera si le javascript est appelé ou non.

  13. #13
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    En fait, je n'avais pas vu
    La chronologie: La page se charge, envoie la requête au serveur, celui-ci génère l'appel de la fonction javascript.
    Cette chronologie est fausse.

    PHP interprète l'intégralité de la page et génère un document HTML qu'il envoie au navigateur.
    Le navigateur interprète le HTML pour l'afficher et exécuter le JavaScript.
    Mais en aucun cas il n'y a d'aller-retour serveur - navigateur - serveur.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  14. #14
    Nouveau membre du Club
    Inscrit en
    Janvier 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 8
    Par défaut
    Ah non désolé.

    Php ne génère que l'appel de la fonction. Ce script est inséré dans la page html... C'est pourquoi je pense qu'on chipote.
    Lisez bien le code.
    Cepandant je vous accorde que ma chronologie est un peu erronée.

  15. #15
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par fabiwan07 Voir le message
    Ah non désolé.

    Php ne génère que l'appel de la fonction. Ce script est inséré dans la page html... C'est pourquoi je pense qu'on chipote.
    Lisez bien le code.
    Ah oui, là je suis d'accord, c'est bien le script PHP qui va déterminer si la fonction sera appelée ou non, ce qui n'enlève rien au fait qu'il est préférable qu'elle soit appelée une fois la page chargée
    D'où la proposition :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script language=javascript>window.onload = redirection;</script>
    mais qui serait effectivement placée dans le code PHP :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ($site == $acces) {
    	echo ("<script language=javascript>window.onload = redirection;</script>");
    }
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  16. #16
    Nouveau membre du Club
    Inscrit en
    Janvier 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 8
    Par défaut
    On y'arrive...

    En tous les cas, cela fonctionne maintenant. Merci pour les solutions et ce petit débat.

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

Discussions similaires

  1. [FLASH MX2004] Creation dynamique d'occurences
    Par WinBernardo dans le forum Flash
    Réponses: 2
    Dernier message: 21/08/2004, 18h05
  2. [en C]creation dynamique d'interface
    Par ronan99999 dans le forum Windows
    Réponses: 3
    Dernier message: 19/08/2004, 13h53
  3. [VB.NET] Erreur sur la creation dynamique d'une texbox
    Par headcooper dans le forum ASP.NET
    Réponses: 4
    Dernier message: 01/07/2004, 20h34
  4. Réponses: 8
    Dernier message: 04/09/2003, 17h07
  5. Creation dynamique d'un objet
    Par Tom_sawyer13 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 06/08/2003, 19h31

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