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 :

delete des balises scripts en double


Sujet :

JavaScript

  1. #1
    Membre chevronné

    Homme Profil pro
    Ingénieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Hospitalier
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Points : 1 768
    Points
    1 768
    Billets dans le blog
    1
    Par défaut delete des balises scripts en double
    Bonjour a tous, j'ai un petit soucis de conception de mon script afin de shooter les balises script en trop, je ne souhaite pas utiliser de framework (jquery proto...).
    Voici le début de mon script mais pour le reste je pèche même avec des setAttribute j'y parvient pas .
    Merci de votre aide, et bonne soirée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    var bscripts = document.getElementsByTagName("script");
    var bscrs = bscripts.src;
    var aFilter = [];
    for(var i=0;bscripts.length>i;i++){
    	alert(bscripts[i].src);
    	if(bscripts[i].src != ""){
    		aFilter = bscripts[i].src;
    	}
    }

    La page qui doit être néttoyé pour exemple.
    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
     
    <html>
    <head>
    <style type="text/css">
    .testDiv{
    	width: 250px;
    	height: 250px;
    	background-color: #CCCCCC;
    }
    .test{
    	width:100px;
    	height:100px;
    	background-color: #CFFCFF;
    }
    </style>
    <!-- UTILISATEUR LAMBDA -->
    <script type="text/javascript" src="alert_script.js"></script>
    <script type="text/javascript" src="alert_script.js"></script>
    </head>
    <body>
    <h1></h1>
    <div class="testDiv"></div>
    <?php
     
    ?>
    </body>
    </html>

  2. #2
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    je n'ai pas bien compris la question mais je peux déjà te dire que ceci n'a pas beaucoup de sens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var aFilter = [];
    aFilter = bscripts[i].src;
    tu déclares "aFilter" comme un tableau et puis tu remplaces ce tableau par des strings tout au long de ta boucle.

    à mon avis tu voulais plutôt faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var aFilter = [];
    aFilter.push(bscripts[i].src);

    sinon pour supprimer des balises scripts, une fois que tu as le bon élément en main (la balise après avoir testé tes conditions) tu peux le supprimer avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementsByTagName('head')[0].removeChild(mon_script);
    ou plus généralement s'ils ne sont pas d'office dans la balise "head" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mon_script.parenNode.removeChild(mon_script);

  3. #3
    Membre chevronné

    Homme Profil pro
    Ingénieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Hospitalier
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Points : 1 768
    Points
    1 768
    Billets dans le blog
    1
    Par défaut
    Bonsoir, désolé pour mon script dépourvu de sens, l'objectif de ce script était de tester les URL scr les comparer pour quels n'ont pas de doublon d'appel sur cette URL et si c le cas supprimer les doublons pour qu'il en reste qu'un.

    Et merci mille fois pour ton explication, j'ai pas pensé du tout au dom.
    Je vais tester de suite.

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 060
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 060
    Points : 44 585
    Points
    44 585
    Par défaut
    Bonsoir,
    cela ne te servira à rien, because une fois chargé le fichier JS est en mémoire, et en cas de doublon les dernières définitions auront pris la place des premières.

    De plus si tu supprimes les références dans le DOM les fonctions restent opérationnelles

    exemple :
    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
    <!DOCTYPE html>
    <html lang="fr">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>[...]</title>
    <script src="http://code.jquery.com/jquery-latest.js" type="text/javascript"></script>
    <script  type="text/javascript">
    function fctTest(){
      alert( arguments.callee);
      alert( document.getElementsByTagName('SCRIPT').length);
    }
    </script>
    <script type="text/javascript">
    var tScript = document.getElementsByTagName('SCRIPT');
    while( tScript.length){
      tScript[0].parentNode.removeChild( tScript[0]);
    }
    </script>
    </head>
    <body>
    <button onclick="fctTest();">Test</button>
    </body>
    </html>
    tu peux même inspecter l'arbre DOM pour vérifier.

  5. #5
    Membre chevronné

    Homme Profil pro
    Ingénieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Hospitalier
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Points : 1 768
    Points
    1 768
    Billets dans le blog
    1
    Par défaut
    Voilà un truc qui ressemble un peu a ce que je souhaite mais là j'arrive pas a empêcher les alert("ok") .
    j'aimerais que seulement une alert me parvient mais je pense qu'il va falloir taper dans un gestionnaire d'événement .
    Par contre le truc chelou ce qu'il supprime pas tout mes balises scripts bizarrement.

    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
     
    <!-- page control_script.js -->
    window.onload = function(){
    	var bscripts = document.getElementsByTagName("script");
    	var url = "http:localhost/control_script.js";
    	//alert(bscripts.length);
    	var nbScripts = bscripts.length;
    	//alert(nbScripts);
    	for(var i=0;nbScripts>i;i++){
    		//alert(bscripts[i].src);
    		if(bscripts[i].src != "" && bscripts[i].src != url){
    				document.getElementsByTagName('head')[0].removeChild(bscripts[i]);
    		}
    	}
    };
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <!-- alert_script.js -->
     
    function loadme(){
    	alert("ok");
    }
    loadme();
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <html>
    <head>
     
    <!-- Page HTML -->
    <script type="text/javascript" src="control_script.js"></script>
    <script type="text/javascript" src="alert_script.js"></script>
    <script type="text/javascript" src="alert_script.js"></script>
    <script type="text/javascript" src="alert_script.js"></script>
    <script type="text/javascript" src="alert_script.js"></script>
    </head>
    <body>
    </body>
    </html>
    Merci de vos lumières.

  6. #6
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    Comme te l'a expliqué noSmoking, ce n'est pas vraiment possible, puisque ton code s’exécutera une fois tout le code complètement chargé et javascript ne possède pas encore le code auto-modifiable. (même si tu peux charger du code par la suite en ajoutant des balises script ou graçe à eval).

    Par contre si ton seul problème réside sur la méthode "alert", tu peux surcharger la fonction "alert" pour la contrôler.

    Sinon voir dans tes évènements si la fonction n'est déclenchée que certaines conditions, alors jouer avec.

    Bonne chance.

  7. #7
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 060
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 060
    Points : 44 585
    Points
    44 585
    Par défaut
    Citation Envoyé par headmax Voir le message
    Voilà un truc qui ressemble un peu a ce que je souhaite mais là j'arrive pas a empêcher les alert("ok") .
    tu n'as qu'à te créer un "espace", exemple simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    // fichier alert_script.js
    if( !window.mySpace){
      window.mySpace = true; // le prochain acces avorteront
      var maFct = function(){
        alert('Yes!');
      };
      maFct();
    }

  8. #8
    Membre chevronné

    Homme Profil pro
    Ingénieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Hospitalier
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Points : 1 768
    Points
    1 768
    Billets dans le blog
    1
    Par défaut
    Merci pour vos lumières sur ce sujet que j'aborde pour la première fois, désolé pour le manque de précision, j'ai du mal moi même a concevoir en JS ce type de module.
    NoSmoking je test ton code, merci pour toute tes Lumières et merci autres biensur .
    Je laisse ouvert le sujet et je posterais le résultat final.

    Bonne soirée à tous.

  9. #9
    Membre expérimenté Avatar de Willpower
    Homme Profil pro
    sans emploi
    Inscrit en
    Décembre 2010
    Messages
    1 009
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 009
    Points : 1 519
    Points
    1 519
    Par défaut
    Citation Envoyé par NoSmoking Voir le message
    tu n'as qu'à te créer un "espace", exemple simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    // fichier alert_script.js
    if( !window.mySpace){
      window.mySpace = true; // le prochain acces avorteront
      var maFct = function(){
        alert('Yes!');
      };
      maFct();
    }
    argh bien vu, je répond trop souvent en me concentrant sur la question précise sans penser au problème dans sa globalité.

  10. #10
    Membre chevronné

    Homme Profil pro
    Ingénieur Hospitalier
    Inscrit en
    Juillet 2004
    Messages
    993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Hospitalier
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 993
    Points : 1 768
    Points
    1 768
    Billets dans le blog
    1
    Par défaut
    argh bien vu, je répond trop souvent en me concentrant sur la question précise sans penser au problème dans sa globalité.
    Soit pas si dur avec toi même, tes informations sont aussi importantes merci pour ton aide.

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

Discussions similaires

  1. Récupérer valeur entre des balises script
    Par lirycs78 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/10/2010, 14h07
  2. Réponses: 2
    Dernier message: 25/09/2009, 12h03
  3. Syntaxe des balises script
    Par zarzar4 dans le forum Général JavaScript
    Réponses: 22
    Dernier message: 01/09/2008, 16h36
  4. récupérer le contenu des balise <script>
    Par GoldenEyes dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 23/06/2008, 13h08
  5. [Prototype] Texte chargé dans une <div> contenant des balises <script>
    Par wenijah dans le forum Bibliothèques & Frameworks
    Réponses: 4
    Dernier message: 22/11/2007, 17h28

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