Div.innerHTML et page html

Résolu
rhan_659 Messages postés 85 Date d'inscription lundi 1 novembre 2004 Statut Membre Dernière intervention 30 juin 2011 - 30 juil. 2008 à 13:00
rhan_659 Messages postés 85 Date d'inscription lundi 1 novembre 2004 Statut Membre Dernière intervention 30 juin 2011 - 30 juil. 2008 à 16:38
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

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
30 juil. 2008 à 15:43
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]
3
rhan_659 Messages postés 85 Date d'inscription lundi 1 novembre 2004 Statut Membre Dernière intervention 30 juin 2011
30 juil. 2008 à 13:47
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
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
30 juil. 2008 à 13:58
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]
0
rhan_659 Messages postés 85 Date d'inscription lundi 1 novembre 2004 Statut Membre Dernière intervention 30 juin 2011
30 juil. 2008 à 14:09
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
30 juil. 2008 à 14:14
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]
0
rhan_659 Messages postés 85 Date d'inscription lundi 1 novembre 2004 Statut Membre Dernière intervention 30 juin 2011
30 juil. 2008 à 15:29
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 !?
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
30 juil. 2008 à 15:34
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)
0
rhan_659 Messages postés 85 Date d'inscription lundi 1 novembre 2004 Statut Membre Dernière intervention 30 juin 2011
30 juil. 2008 à 15:52
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.
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
30 juil. 2008 à 15:55
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]
0
rhan_659 Messages postés 85 Date d'inscription lundi 1 novembre 2004 Statut Membre Dernière intervention 30 juin 2011
30 juil. 2008 à 16:00
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
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
30 juil. 2008 à 16:11
>>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]
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
30 juil. 2008 à 16:23
<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)
0
rhan_659 Messages postés 85 Date d'inscription lundi 1 novembre 2004 Statut Membre Dernière intervention 30 juin 2011
30 juil. 2008 à 16:38
pas de souci, moi aussi ! lol
0
Rejoignez-nous