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 :

document.getElementById et IE7


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 21
    Par défaut document.getElementById et IE7
    Bonjour,

    Je sors un variable avec un XMLHttpRequest et à la place de return(xhr_object.responseText) je fais alert(xhr_object.responseText)

    quand je saisis une lettre dans l'input qui me sert à interroger en AJAX ma base, j'ai bien le code HTML dans la fenetre d'alerte JS aussi bien avec Firefox que IE7.

    Mais le souci, c'est que je veux l'afficher dans un <div> et j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function writediv(texte)
    {
    if (document.getElementById)
        {
    	document.getElementById('pseudobox').innerHTML = texte;    
    	}
      else if (document.all)
        {
        document.all["pseudobox"].innerHTML = texte;
        }
    }
    et dans le body

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div id="pseudobox"></div>
    L'affichage se fait nickel sous firefox, safari, mais rien s'affiche sous IE7

    Une idée ?
    Merci

  2. #2
    Membre chevronné Avatar de d-Rek
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    438
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2007
    Messages : 438
    Par défaut
    N'utilise que le document.getElementById pour accéder aux éléments pour IE6 - 7 et FF.
    Pas de document.all ni de getElementsByName sauf si besoin est mais le document.all est à proscrire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function $(id){return document.getElementById(id);} // Clean your code
    function writediv(texte) {
      	$('pseudobox').innerHTML = texte;
    }
    Ou encore mieux
    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
    var IE = false;
    if(navigator.appName=='Microsoft Internet Explorer'){var IE=true;}
    function createDiv(id, content, style, where){
    	var newdiv = document.createElement('div');
    	newdiv.setAttribute('id', id);
    	if(IE){
    		newdiv.setAttribute('cssText', style);
    	}else{
    		newdiv.setAttribute('style', style);
    	}
    	newdiv.innerHTML = content;
    	$(where).appendChild(newdiv);
    }
     
    createDiv('pseudobox', texte, 'border:1px solid #000;', 'divConteneur');
    Beaucoup plus propre champion

  3. #3
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Bonjour,
    Citation Envoyé par d-Rek
    Beaucoup plus propre champion
    surtout fonctionnellement assez différent :
    le fonctionnement de la page sera différent en rajoutant un élément, par rapport à uniquement modifier le texte d'un élément existant.
    La mise en page doit être prévue avec et sans.
    Il faut aussi en prévoir la suppression.

    Bref, la 1° solution semble suffisante (et plus simple) dans ce cas ...

    A+

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 21
    Par défaut
    Ben merci, mais il doit y a voir autre choses car cela ne marche toujours qu'avec FF et pas IE7

    Code complet de la page:

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
     
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet exclude-result-prefixes="xsl fmrs #default" version="1.0" xmlns:fmrs="http://www.filemaker.com/xml/fmresultset" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    	<?xslt-cwp-query params="-grammar=fmresultset&-encoding=UTF-8&-process"?>
    	<xsl:param name="request-query"/>
    	<xsl:include href="utilities.xsl"/>
    	<xsl:output encoding="UTF-8" indent="yes" method="html"/>
    	<xsl:variable name="stored-find">
    		<xsl:call-template name="get-stored-find"/>
    	</xsl:variable>
    	<xsl:template match="/fmrs:fmresultset">
    		<html>
    			<head>
    			<meta http-equiv="Cache-Control" content="no-cache"/>
    				<title>Accueil</title>
    			</head>
    <script type="text/JavaScript">
    <xsl:text disable-output-escaping="yes">
    <![CDATA[
     
    function $(id){return document.getElementById(id);} 
    function writediv(texte) {  $('pseudobox').innerHTML = texte; }
     
    function verifPseudo(pseudo)
    {
    if(pseudo != '')
    {
     if(texte = file('result.xsl?-lay=Wdepartements&Département.op=cn&Département='+ escape(pseudo) +'&CP.op=cn&CP=&secteurdv.op=eq&secteurdv=&secteurmanager.op=eq&secteurmanager=&secteurcommerciaux.op=eq&secteurcommerciaux=&-lop=and&-find=Rechercher+des+enregistrements'))
    {writediv(texte)}
    }
    }
    function file(fichier)
    {	var xhr_object = null; 
     
    	if(window.XMLHttpRequest) // Firefox et autres
    	   xhr_object = new XMLHttpRequest(); 
    	else if(window.ActiveXObject){ // Internet Explorer 
    	   try {
                    xhr_object = new ActiveXObject("Msxml2.XMLHTTP");
                } catch (e) {
                    xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
                }
    	}
    	else { // XMLHttpRequest non supporté par le navigateur 
    	   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
    	   xhr_object = false; 
    	}
    xhr_object.open("GET", fichier, false);
    xhr_object.send(null);
    if(xhr_object.readyState == 4) return(xhr_object.responseText);
    else return(false);
    }
    ]]>
    </xsl:text>
    </script>
    			<body bgcolor="#ffffff" text="#000000">
    				<table width="100%">
    					<tr>
    						<td><h3>Rechercher un département ... </h3></td>
    					</tr>
    				</table>
    				<hr/>
    				<form action="">
      <table width="251" border="0">
        <tr>
          <td width="223"><p class="Style1">Saisissez le debut du nom :</p>
            <p>
              <input type="text" name="pseudo" onKeyUp="verifPseudo(this.value)" />
            </p></td>
          <td width="18"></td>
        </tr>
      </table>
      <table width="50%" border="0" align="center">
        <tr>
          <td><div id="pseudobox"></div></td>
        </tr>
      </table>
    </form>
    			</body>
    		</html>
    	</xsl:template>
    </xsl:stylesheet>
    La configuration IE7 est d'origine

    Merci

    Pour info, sous FF, il me dit

    writediv is not defined
    http://fmhost-c.servehttp.com/fmi/xs.../recherche.xsl
    Line 19

    mais ça marche quand même !

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 21
    Par défaut
    aprés plein d'essais, marche toujours pas .....


    Dans un textarea, j'ai bien du html propret sur IE7 mais impossible de faire la sortie dans un DIV avec

    Sortie TEXTAREA
    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
     
    <html>
    <head>
    <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-15">
    <title>Liste des enregistrements</title>
    </head>
    <body text="#000000" bgcolor="#ffffff">
    <form method="post">
    <table width="100%" cellspacing="0" border="1">
    <tr>
    <th align="left">Departement</th><th align="left">CP</th><th align="left">Secteur DV</th><th align="left">Secteur Manager</th><th align="left">Secteur commercial</th>
    </tr>
    <tr>
    <td align="left"><a href="browserecord.xsl?-lay=Wdepartements&-recid=177&-find=-find">Seine-Maritime</a></td><td align="left">76</td><td align="left">France</td><td align="left">France</td><td align="left">France</td>
    </tr>
    <tr>
    <td align="left"><a href="browserecord.xsl?-lay=Wdepartements&-recid=178&-find=-find">Seine-et-Marne</a></td><td align="left">77</td><td align="left">France</td><td align="left">France</td><td align="left">France</td>
    </tr>
    <tr>
    <td align="left"><a href="browserecord.xsl?-lay=Wdepartements&-recid=193&-find=-find">Hauts de Seine</a></td><td align="left">92</td><td align="left">France</td><td align="left">France</td><td align="left">France</td>
    </tr>
    <tr>
    <td align="left"><a href="browserecord.xsl?-lay=Wdepartements&-recid=194&-find=-find">Seine Saint Denis</a></td><td align="left">93</td><td align="left">France</td><td align="left">France</td><td align="left">France</td>
    </tr>
    </table>
    </form>
    </body>
    </html>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function go(cible){ 
    getXhr(); 
    xhr.onreadystatechange = function(){ 
    if(xhr.readyState == 4 && xhr.status == 200){ 
    leselect = xhr.responseText; 
    document.getElementById('pseudoboxa').innerHTML = leselect; 
    } 
    } 
    xhr.open("POST","result.xsl",true); 
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); 
    xhr.send('-lay=Wdepartements&departement.op=cn&departement='+ escape(cible) +'&CP.op=cn&CP=&secteurdv.op=eq&secteurdv=&secteurmanager.op=eq&secteurmanager=&secteurcommerciaux.op=eq&secteurcommerciaux=&-lop=and&-find=Rechercher+des+enregistrements');
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div id="pseudoboxa"></div>
    Une idée ?

  6. #6
    Membre Expert
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Par défaut
    garde le code dans le tag body, et vire le reste.

Discussions similaires

  1. Pb avec document.getElementById
    Par greg49 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 20/03/2006, 09h21
  2. javascript, iframe, document.getElementById
    Par zevince dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 08/03/2006, 17h00
  3. [Mozilla] document.getElementById(var) has no properties
    Par dys_ dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 14/11/2005, 15h33
  4. document.getElementById() has no properties ..
    Par ahage4x4 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 01/06/2005, 17h04
  5. This.value au lieu de document.getElementById('field').value
    Par yoyot dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 04/03/2005, 14h02

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