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 :

Est-il possible d'integrer un <script> avec un document.write


Sujet :

JavaScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    23
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 23
    Par d�faut Est-il possible d'integrer un <script> avec un document.write
    J'ai lu dans de nombreux post qu'il n'est pas de bon usage d'int�grer un script par document.write("<script ......).
    Mais c'est la solution la plus simple que je trouve pour recycler un script (asciiMathml.js) sans avoir � replonger dedans.


    Donc ma question est : est-ce possible ou bloqu� par javascript ?

    ici l'envoi vers une <frame name ="test">

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    parent.test.document.write("coucou <script>alert('coucou');</script>");
    consid�re que la chaine de caract�res n'est pas correctement form�e apr�s "coucou ...

    (m�me en prot�geant le <script> par \<script>

    Merci

  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 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
    parent.test.document.write("coucou <script>alert('coucou');</"+"script>");
    mais c'est certainement la derni�re chose � faire.
    Hormis eval, document.write est sans doute une des instructions javascript les plus d�licates � manipuler

    recycler ?

    pourquoi ne pas simplement redefinir les fonctions ?
    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
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    23
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 23
    Par d�faut
    Citation Envoy� par SpaceFrog Voir le message
    mais c'est certainement la derni�re chose � faire.
    Hormis eval, document.write est sans doute une des instructions javascript les plus d�licates � manipuler
    J'en suis conscient ... mais

    Citation Envoy� par SpaceFrog Voir le message
    recycler ?
    pourquoi ne pas simplement red�finir les fonctions ?
    il y a 3000 lignes de code dans ce script, d'o� un gros effort � produire pour se l'approprier. (c'est ce que j'ai fait finalement)

    Bien que cela soit inopportun, ma question portait sur la possibilit� (th�orique) de le faire.
    Typiquement, le document.write passe tr�s bien si on remplace la balise <script> par <b>
    J'ai donc l'impression que c'est sp�cifiquement cette balise qui est en cause.

  4. #4
    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 tu ex�cutes dans une console JavaScript le code
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    document.write("<script>alert('coucou')</script>")
    cela fonctionne tr�s bien.

    Ensuite, au-del� d'�tre, comme le souligne Spaffy, l'une des pires fonctionnalit�s de JavaScript, ce write() est souvent source de probl�mes car peu connaissent r�ellement son fonctionnement.

    Un document HTML poss�de deux �tats : open (en cours de cr�ation) ou close (enti�rement charg�).
    Si le document est dans l'�tat open, write() va ins�rer ses param�tres � l'endroit o� se trouve l'interpr�teur.
    Si le document est dans l'�tat close, write() va le r�ouvrir (et donc supprimer le contenu actuel) et y inclure ses param�tres.

    Si tu as bien suivi, tu noteras que dans le second cas, il n'est � aucun moment question de refermer le document, ce qui dans ton cas pourrait �tre la source du probl�me.

    A titre d'exemple et si tu as fait le test d'ins�rer le code
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    document.write("<script>alert('coucou')</script>")
    dans une console, tu remarqueras que l'indicateur de chargement reste actif sur la page.
    Si tu ajoutes une instruction
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    document.write("<script>alert('coucou');document.close();</script>");
    ce n'est plus le cas.
    Or, je constate que tu dis que ton code fait 3000 lignes alors que ton exemple n'en fait qu'une, j'en conclue donc que ton but n'est pas de faire un alert() dans une page.
    J'en conclue aussi que ton "vrai" code s'appuie sur des actions a effectuer lorsque le document est charg� (window.onload ou autres d�riv�s).
    Donc ton write() ouvre le document, y ins�re un script qui attend le onload du body... mais si le document n'est pas ferm�, il n'y aura jamais de onload !
    Teste ces deux codes dans la console pour t'en persuader :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    document.write("<script>window.onload = function(){alert('coucou');}</script>")
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    document.write("<script>window.onload = function(){alert('coucou');};document.close();</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

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    23
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 23
    Par d�faut VICTOIRE !
    Effectivement, dans la console javascript, tout passe sans erreur.

    Apr�s bien des essais :
    La source de l'erreur est la non protection du / du </script>
    Avec
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    parent.test.document.write("<script>alert('coucou');<\/ script>");
    Cela fonctionne ... enfin

    Merci

  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 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
    j'ai l'impressiion que ce petit d�tail de mon post t'avais �chapp�:

    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 !

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 3
    Dernier message: 12/02/2009, 15h09
  2. R�ponses: 0
    Dernier message: 08/12/2008, 15h10
  3. R�ponses: 5
    Dernier message: 11/12/2007, 12h34
  4. Est ce possible de parser un Fichier XML g�n�r� avec la persistance JAVA
    Par hbellahc dans le forum G�n�ral JavaScript
    R�ponses: 4
    Dernier message: 31/08/2007, 14h23

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