[info] document.all / document.childNodes
Hello,
Je suis en train de faire une série de tests de compatibilité. Je constate une fois de plus que le développement web et en particulier ceux qui développent les navigateurs font vraiment un grand n'importe quoi...
J'ai noté les différences suivantes qui me paraissent intéressantes à vous communiquer.
L'objectif est de récupérer la totalité du contenu d'une page HTML.
document.all supporté (mais différemment)
Pour I.E.
Code:
var totalHTML = window.document.all[1].outerHTML;
pour opera
Code:
var totalHTML = window.document.all[0].outerHTML;
Pour Firefox & Netscape
Code:
var totalHTML = '<html>' + window.document.childNodes[1].innerHTML + '</html>';
Ce qui donne
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
function getTotalHTML(d) {
//d est un document
// ex : window.document
// ou : window.parent.frames["maframe"].document
if (window.document.all) {
var s = new String(d.all[1].outerHTML)
if (s.substr(0,5).toLowerCase() == "<html") {
return s
} else {
return d.all[0].outerHTML
}
} else {
return '<html>' + d.childNodes[1].innerHTML + '</html>'
}
} |
bonne lecture...
@+
Laurent
Re: [info] document.all / document.childNodes
Citation:
Envoyé par Laurent Jordi
Pour Firefox & Netscape
Code:
var totalHTML = '<html>' + window.document.childNodes[1].innerHTML + '</html>';
Et quelque chose de ce genre:
Code:
var totalHTML = window.document.documentElement.innerHTML;
Parceque childNodes de 1, ça dépends quand même fortement de ta page...
Ca n'est sûrement pas universel
Ça n'est sûrement pas universel, toutefois, dans mon cas ça marche. Je pense qu'il est nécessaire de tester avec les indexes avant d'utiliser ce script.
N'ayant pas trouvé de solution toute faite, ni ici, ni sur le net, j'ai fait ma propre tambouille, je vous en fait profiter, si vous voulez l'améliorer n'hésitez pas et surtout, publiez le résultat.
Bien à vous
Laurent
Ben c'est un peu compliqué...
J'explique,
Je dois construire mail. Ce mail n'a pas le même contenu en fonction du destinataire. En conséquence, j'ai créé une page indépendante qui génère ces différents contenus.
La fonction qui exécute la séquence, démarre sur onLoad et génère le contenu du mail dans une frame. Lorsque cette dernière est totalement chargée, elle récupère le contenu HTML, remplace les < et les > par des [ et des ] puis envoie le tout à une page aspx générique qui émet tous mes mails (la transformation des <> en [] est un contournement d'une sécurité de IIS).
Tout ceci fonctionne parfaitement sous IE. c'est même assez joli comme mécanique. Le problème est que ça se complique pas mal sur les autres navigateurs. Firefox semble ne pas très bien exécuter le onload, opéra réagit a sa manière, bref c'est du peaufinage. Si ça ne marche pas je demanderais aux 8% d'utilisateurs qui n'aiment pas I.E de passer outre leur dégoût et d'utiliser ce navigateur...
@+
Laurent
Re: Ben c'est un peu compliqué...
Citation:
Envoyé par Laurent Jordi
Je dois construire mail. Ce mail n'a pas le même contenu en fonction du destinataire. En conséquence, j'ai créé une page indépendante qui génère ces différents contenus.
Euh, il me semble que générer des mails, ça serait plus un travail à faire sur ton serveur que sur ton client.
De plus, ça t'évite tous les soucis que tu as actuellement de compatibilité des clients....