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 :

[POO] Réécrire un HTMLMetaElement


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de LhIaScZkTer
    Inscrit en
    Mai 2004
    Messages
    564
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2004
    Messages : 564
    Par défaut [POO] Réécrire un HTMLMetaElement
    Bonjour à tous,

    Je souhaite faire quelque chose de très rustique, limite campagnard, sans être péjoratif

    Je fini développer une application ASP.NET C# et j'ai besoin de faire une redirection. Response.redirect("") dans mon cas n'est pas la bonne méthode, car avant j'ai la génération d'une nouvelle fenêtre avec javascript qui n'est pas exécutée si j'utilise cette méthode.

    J'ai donc pensé à quelque chose comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for(var i=0; i<document.getElementsByTagName('meta').length; i++){
       if(document.getElementsByTagName('meta')[i].httpEquiv =='refresh'){
    	 document.getElementsByTagName('meta')[i].content="3URL=http://www.google.com";
    	alert(document.getElementsByTagName('meta')[i].content);
    	}
    }
    Car en plus, je n'ai pas accès au balise du body, car j'utilise un masterPage, donc je voulais y accéder via le DOM. Le problème est que ça ne marche pas, pourtant, ça devrait.

  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
    ça devrait en effet ...
    tu as un message d'erreur ???
    tu lances bien le code dans le onload ?
    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 éclairé Avatar de LhIaScZkTer
    Inscrit en
    Mai 2004
    Messages
    564
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2004
    Messages : 564
    Par défaut
    Salut SpaceFrog,

    Merci pour ton aide
    Non, je n'ai pas de message d'erreur toute fois, j'ai mis le script dans le body, l'alert s'affiche bien pourtant avec les bonnes valeurs. De plus, quand j'affiche le code source la balise meta à bien été modifier aussi.

  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
    En fait le souci prvient du fait que toutes les balises meta n'on pas cet
    attribut.
    le test engendre donc un erreur que tu peux résoudre avec un try catch:

    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
    <script type='text/javascript'>
    function getMetas(){
    for(var i=0; i<document.getElementsByTagName('meta').length; i++){
     
      try {if (document.getElementsByTagName('meta')[i].httpEquiv) {throw 'yes'}
           else { throw 'no'}
           }
      catch(e){   
           if (e=='yes'){
                   document.getElementsByTagName('meta')[i].content="3URL=http://www.google.com";
    				}
     
    			}	
    }
    }
     
    </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 !

  5. #5
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    Ce n'est pas pour me lancer dans une grand controverse avec une grenouille plus grosse que moi (), mais...

    Est-ce que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for(var i=0; i<document.getElementsByTagName('meta').length; i++){
       if(document.getElementsByTagName('meta')[i].httpEquiv && document.getElementsByTagName('meta')[i].httpEquiv =='refresh'){
    	 document.getElementsByTagName('meta')[i].content="3URL=http://www.google.com";
    	alert(document.getElementsByTagName('meta')[i].content);
    	}
    }
    n'éviterait pas également d'accéder à des attributs inexistants ?

    De plus, et bien que "Early optimization is the root of all evil" comme chacun sait ^^, pas la peine d'aller recréer la collection des balises méta 4 fois :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    var metas = document.getElementsByTagName('meta');
    for(var i=0; i<metas.length; i++){
       if(metas[i].httpEquiv && metas[i].httpEquiv =='refresh'){
    	 metas[i].content="3URL=http://www.google.com";
    	alert(metas[i].content);
    	}
    }

  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
    a priori non
    IE semble planter là
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementsByTagName('meta')[i].httpEquiv
    si la balise ne comprte pas d'attribut http-equiv

    d'ou la nécessité de passer par le try catch qui evite le plantage

    en tout cas il me throw des no ... c'est que le try fait son office ...
    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
    Membre Expert
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    a priori non
    IE semble planter là
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementsByTagName('meta')[i].httpEquiv
    si la balise ne comprte pas d'attribut http-equiv

    d'ou la nécessité de passer par le try catch qui evite le plantage

    en tout cas il me throw des no ... c'est que le try fait son office ...
    En effet... ^^
    Bon ben j'ai encore appris un truc

    Bizarre que ça ne marche pas comme ça, alors que tester une méthode (éventuellement) inexistante d'un objet est "possible" et renvoie simplement "undefined" le cas échéant... ^^ ce qui est copieusement employé un peu partout. Je pensais que ça se passait de la même manière avec les attributs des éléments : visiblement pas

  8. #8
    Membre éclairé Avatar de LhIaScZkTer
    Inscrit en
    Mai 2004
    Messages
    564
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2004
    Messages : 564
    Par défaut
    J'ai quelques effets de bord en faisant comme ça, tout les contents de tous les meta avec un http-equiv prennent la valeur 3;URL=http://www.google.com. J'ai rajouté une condition pour n'assigner que celle qui a httpEquiv == refresh, mais toujours aucun signe de vie

  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
    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
    <script type='text/javascript'>
    function getMetas(){
    for(var i=0; i<document.getElementsByTagName('meta').length; i++){
     
      try {if (document.getElementsByTagName('meta')[i].httpEquiv) {throw 'yes'}
           else { throw 'no'}
           }
      catch(e){   
           if (e=='yes'){
                   if(document.getElementsByTagName('meta')[i].httpEquiv=='refresh'){
                   document.getElementsByTagName('meta')[i].content="3URL=http://www.google.com";}
    				}
     
    			}	
    }
    }
     
    </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 !

  10. #10
    Membre éclairé Avatar de LhIaScZkTer
    Inscrit en
    Mai 2004
    Messages
    564
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2004
    Messages : 564
    Par défaut
    Merci encore une fois pour votre aide.

    Je me cite
    J'ai rajouté une condition pour n'assigner que celle qui a httpEquiv == refresh, mais toujours aucun signe de vie
    Donc oui SpaceFrog, c'est bien cela que j'ai fais, mais rien ne fonctionne. Et c'est bien incompréhensible

    ça tombe toujours les vendredis ce genre de cagade

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

Discussions similaires

  1. [POO] C'est quoi une classe en claire...???
    Par Spack dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 26/01/2009, 15h53
  2. Réponses: 16
    Dernier message: 06/06/2007, 12h42
  3. Réponses: 13
    Dernier message: 28/08/2004, 18h43
  4. [langage] Pb POO perl
    Par loothoof dans le forum Langage
    Réponses: 4
    Dernier message: 26/05/2004, 12h08
  5. lier un cube à un objet (POO)
    Par Hypnos dans le forum OpenGL
    Réponses: 12
    Dernier message: 26/08/2003, 21h46

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