Div.innerHTML et page html [Résolu]

Signaler
Messages postés
85
Date d'inscription
lundi 1 novembre 2004
Statut
Membre
Dernière intervention
30 juin 2011
-
Messages postés
85
Date d'inscription
lundi 1 novembre 2004
Statut
Membre
Dernière intervention
30 juin 2011
-
bonjour

j'ai besoin d'afficher une page html complete dans une div.

via de l'ajax je récupére ma page html que j'incorpore dans ma div via ineerHTML

mais j'ai 2 pb

le premier sous ie, il plante sur la ligne div.innerHTML = XHRequest.responseText sauf si je ne garde que ce qui entre la balise <Form> (sans garder la balise) alors s'il ya plusieur balise ça part en vrille

le deuxieme est commun a ie et FF si l apage appeller fait appel a des CSS ou du JS dans un fichier ce n'est pas pris en compte idem pour les fonctions appeller dans le onload par exemple !

plusieurs idée ?

merci !

13 réponses

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
par exemple !    petoleTeam++

retourner du javascript ( et du ccs ! ) avec ajax est ( oserais-je le dire ?  ) toujours inutile !
mets les fonctions dans la page applelante et tu les appelles quand ajax à répondu

ou alors, mais à mon heumble avis, c'est se compliquer la tâche, inutilement,
regarde comment font les (soit-disant) framework ou GAG ici

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Messages postés
85
Date d'inscription
lundi 1 novembre 2004
Statut
Membre
Dernière intervention
30 juin 2011

j'ai trouvé un début de solution

en remplacant

div.innerHTML = XHRequest.responseText

par

var div2 = document.createElement('div');
            div2.innerHTML = PageHtml;
            div.appendChild(div2);

je ne suis plus obligé de faire le ménage autour de la balise <form> mais en cas de multi balise <form> ça plante toujours
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
Bonjour,

>>div.innerHTML = XHRequest.responseText sauf si je ne garde que ce qui
entre la balise <Form>
>>(sans garder la balise) alors s'il ya
plusieur balise ça part en vrille
aucune raison valable.
mais comme on n'a rien pour voir ce que tu fais, tout est posible.

>> ou du JS dans un fichier ce n'est pas pris en compte.
le js n'est pas interprété. ajax renvoie du texte et rien d'autre
il faut "interpréter" manuellement. ( eval ou autres )

de plus en plus, je pense qu'ajax est mis à toutes les sauces, pour faire
un peu tout et surtout n'importe quoi. le but d'ajax c'est d'appeler un script
sur le serveur, qui retourne des données... pas une page complète avec javascript
et le reste ! pour ça les méthodes classiques restent valables !

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Messages postés
85
Date d'inscription
lundi 1 novembre 2004
Statut
Membre
Dernière intervention
30 juin 2011

re,

c'est vrai que j'ai été radin sur les exemple de mon code !

le JS qui appel la page (c'est synchrone)

    var XHRequest = null;
    if(window.XMLHttpRequest){
        // Firefox et autres
        XHRequest = new XMLHttpRequest();
        if (XHRequest.overrideMimeType){XHRequest.overrideMimeType('text/xml')}
    }else if(window.ActiveXObject){
        // Internet Explorer
          try { XHRequest = new ActiveXObject("Msxml2.XMLHTTP");
          }
          catch(e) {XHRequest = new ActiveXObject("Microsoft.XMLHTTP");
          }
    }else{
        //non supporté par le navigateur
        alert("XMLHttpRequest non supporté par le navigateur");
        return null;
    }
    var arrayURL = new Array();
    arrayURL = explodeURL(url);
    urlMenu = arrayURL['path']+"/"+arrayURL['cmd'];
   
    XHRequest.open("GET", url , false);
    XHRequest.send(null);

        //traitement uniquement si le flux XML est complètement chargé; 4 = complet"
        if (XHRequest.status == 200) {

            view.innerHTML = "";
    //        var PageHtml = leftString(rightString(rightString(XHRequest.responseText,"<form"),">"),"</form>");
           
            var PageHtml = XHRequest.responseText;
            var div = document.createElement('div');
            div.innerHTML = PageHtml;
            view.appendChild(div);

la ma page html renvoyé (elle fonctionne parfaitement si je l'appel directement sous ie ou ff)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>&lt;b&gt;Gestion des Contributeurs&lt;/b&gt; (Par Contributeur)</title><link rel="stylesheet" href="/intranet2/dev/Portail.nsf/sys_script/gss.css" type="text/css">
<script language="JavaScript" src="/intranet2/dev/Portail.nsf/sys_script/gjs.js"></script>
<script language="JavaScript">
function chgCount(src) {
 var count = src.options[src.selectedIndex].text;
 var path = 'sys_wv?OpenForm&View=GContrib&Sort=0&Start=1&Count=' + count + '&RestrictToCategoryField=&RestrictToCategoryValue=';
 window.location.href = path; }
function searchDB(src) {
 var query = src.value;
 var path = 'sys_wv?OpenForm' + sstring + '&Query=' + query;
 window.location.href = path; }
</script>
<script language="VBScript">
Function makeMsgBox(title,mess,icon,buts,defbut,mods)
   butVal = buts + (icon*16) + (defbut*256) + (mods*4096)
   makeMsgBox = MsgBox(mess,butVal,title)
End Function
Function makeInputBox(title,pr,def)
    makeInputBox = InputBox(pr,title,def)
End Function
</script>
<script language="javascript" type="text/javascript" src="/intranet2/dev/Portail.nsf/BJS_MooTools"></script>
<script language="javascript" type="text/javascript" src="/intranet2/dev/Portail.nsf/BJS_Smoothbox"></script>
<link rel='stylesheet' type='text/css' href='/intranet2/dev/Portail.nsf/CSS_SmoothBox'>
<script language="JavaScript" type="text/javascript">
<!--
document._domino_target = "_self";
function _doClick(v, o, t, h) {
  var form = document._sys_wv;
  if (form.onsubmit) {
     var retVal = form.onsubmit();     if (typeof retVal "boolean" && retVal false)
       return false;
  }
  var target = document._domino_target;
  if (o.href != null) {
    if (o.target != null)
       target = o.target;
  } else {
    if (t != null)
      target = t;
  }
  form.target = target;
  form.__Click.value = v;
  if (h != null)
    form.action += h;
  form.submit();
  return false;
}
// -->
</script>
</head>

<form method="post" action="/intranet2/dev/Portail.nsf/sys_wv?OpenForm&amp;Start=1&amp;Count=1000&amp;Seq=1&amp;View=GContrib&amp;Sort=0" name="_sys_wv">

</form>

   

        

            Gestion des Contributeurs (Par Contributeur)
       

<form action ="javascript:searchDB(frmSrch.search)" name="frmSrch" method="get">
        Ajouter un Contributeur
&nbsp;|&nbsp;
        [javascript:deleteSelect()   Suppression Contributeur(s)]
</form>
<form name="main" action="">

<table width="100%" cellspacing=0 cellpadding=0 border=0>
<tr>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
    <td></td>
</tr>
<tr>
    <td class="tdH" witdh= 10></td>
<td class="tdH" width=5></td>
    <td class="tdH" nowrap>Contributeur</td>
    <td class="tdH" nowrap>Etat</td>
    <td class="tdH" nowrap>Intranet</td>
    <td class="tdH" nowrap>Sujet</td>
    <td class="tdH" nowrap>Module</td>
</tr>
<tr class="trC" onMouseOver="chgCL(this,'trMC_blue')" onMouseOut="chgCL(this,'trC')">
    <td class="tdD" width=10></td><td class="tdD" width=5></td>
    <td class="tdD" width=25% nowrap style="cursor:'hand'">Amael Besnier</td>
    <td class="tdD" width=5% nowrap style="cursor:'hand'">&nbsp;</td>
    <td class="tdD" width=20% nowrap style="cursor:'hand'">Intranet Rocquencourt</td>
    <td class="tdD" width=20% nowrap style="cursor:'hand'">Titre du Sujet1</td>
    <td class="tdD" width=30% nowrap style="cursor:'hand'">titre du module1 titre du module2</td>
</tr>
<tr class="trCA" onMouseOver="chgCL(this,'trMC_blue')" onMouseOut="chgCL(this,'trCA')">
    <td class="tdD" width=10></td><td class="tdD" width=5></td>
    <td class="tdD" width=25% nowrap style="cursor:'hand'">Benoit MANEUVRIER</td>
    <td class="tdD" width=5% nowrap style="cursor:'hand'"><a href="http://53.249.171.46/intranet2/dev/Portail.nsf/0/10C133E778D20527C125747C0046F79B?EditDocument&SmoothBox=O&View=GContrib&S
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
rien regardé ! puisque, je me cite ?
ajax renvoie du texte et rien d'autre
si tu veux interpréter, il faut que tu le fasses...
à mon avis, utilises un (soit-disant) framework....
mais tu te prépares des lendemains qui déchantent
revient à des choses normales et simples.
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Messages postés
85
Date d'inscription
lundi 1 novembre 2004
Statut
Membre
Dernière intervention
30 juin 2011

j'aimerais bien ! faire autrement !

mais malheureusement, je n'ai pas le choix !

il faut "interpréter" manuellement. ( eval ou autres )

en gros il faut que je recherche le script dans la page pour faire un eval dessus !?
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
14
Bonjour,
<table bgcolor="#e6effe" border="0" cellpadding="5" cellspacing="0" width="100%">----, j'ai besoin d'afficher une page html complete
dans une div.</td>
</td></tr></tbody></table>Ajax
lave plus blanc mais obsurci l'horizon, en gros pourqoui ne pas mettre la page
html dans une IFRAME?

... et zouh! la
page est dans un DIV.
;O)
Messages postés
85
Date d'inscription
lundi 1 novembre 2004
Statut
Membre
Dernière intervention
30 juin 2011

merci

pour l'iframe j'ai déjà essayé et ça ne solutionne pas mon pb, sauf si tu trouve un moyen pour que mootools (smoothbox) ouvre une page par dessus un frame.
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
et plutôt qu'ajx, envoyer dans un div...
appel àu php avec un target vers un iframe, et point barre.

quand à passer au dessu d'un frame....

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Messages postés
85
Date d'inscription
lundi 1 novembre 2004
Statut
Membre
Dernière intervention
30 juin 2011

malheureusement ce n'est pas du php ! mais du lotus domino...

j'ai déjà essayer de passer au dessus du frame, mais j'y suis pas arrivé

l'iframe me pose le meme probleme

vu la strucutre de mon appli passé par une div est la seule solution que j'ai trouvé !

je viens de jeter un oeil à gag, ça ma l'air interressant merci
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
>>malheureusement ce n'est pas du php ! mais du lotus domino...
ça ne doit pas changer grand chose à priori... c'est le langage sur le serveur.
( mais je ne connais pas... )

et demande à petoleTeam, justement, qui nous a fait une "fausse pop-up"
qui passe au dessus de tout... grâce aux iframe.

tu fais comment avec ajax pour passr au dessus des frames ?
( enfin..  ajax rien à voir, c'est un div )
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
14
<table bgcolor="#e6effe" border="0" cellpadding="5" cellspacing="0" width="100%">

----,

ouvre une page par dessus un
frame

</td>

</td>
</tr>
</tbody>
</table>je dois
admettre que je suis largué...
;O)
Messages postés
85
Date d'inscription
lundi 1 novembre 2004
Statut
Membre
Dernière intervention
30 juin 2011

pas de souci, moi aussi ! lol