Je voudrais pouvoir obtenir le code HTML d'une page sous forme de chaîne avant le chargement de la page et document.write ();
est appelé en utilisant mon extension javascript. Est-il possible d'obtenir tout ou partie du code HTML d'une page avant son chargement? Merci pour l'aide
3 Réponses :
Essayez ceci:
document.documentElement.outerHTML
ou cela:
document.documentElement.innerHTML
êtes-vous sûr d'obtenir le HTML avant le chargement de la page ou les appels à document.write? Je ne pouvais pas le faire fonctionner de cette façon
Essayez de charger la page en utilisant jQuery ajax
$(document).ready(function() { $.ajax({ type: "GET", url: "page.html", data: { }, success: function(data){ // in data is returned page.html html code } }); });
document.documentElement.innerHTML
ou document.documentElement.outerHTML
stockera le code de la page chargé seulement avant ce script
Je ne suis pas sûr que cela fonctionne. J'ai essayé d'utiliser ce code: $ (document) .ready (function () {$ .ajax ({type: "GET", url: "page.html", data: {}, success: function (data) {var myWindow = window.open ("", "msgwindow", "width = 200, height = 100"); myWindow.document.write (data + "bonjour le monde");}});}); code > et pourtant la fenêtre s'est ouverte après la page chargée. Qu'est-ce qui ne va pas?
document.write a lieu avant document. $ (document) .ready () ou document.onload. Un document.write après un événement onload (le signal que la page a chargé) écrase le document. Ainsi, pour définir des parties de la page à l'aide de javascript, la meilleure pratique consiste généralement à utiliser getElementById et à y écrire.
Les seuls éléments disponibles pendant document.write sont les éléments situés au-dessus dans le fichier de document, et ce n'est pas une fonctionnalité de document mais plutôt une implémentation normale.
IE
<p id="line1">1st line of html output</p> <script> alert(document.getElementById("line1").innerText); </script> <script> alert(document.getElementById("lastline").innerText); </script> <p id="lastline">last line of html output</p>
Résultats normalement dans une boîte d'alerte avec "1ère ligne de sortie html"
Suivi d'une erreur dans la console ... Uncaught TypeError: Impossible de lire la propriété 'innerText' de null p>
Une solution alternative est d'afficher: aucune la page. Modifiez la page puis utilisez un effet de transaction pour provoquer l'affichage de la page. Ce qui donne la même apparence à l'utilisateur.
donc si je lis ce droit, je ne peux pas accéder au HTML tant qu'il n'est pas visible sauf si j'utilise un manipulateur DOM? (comme getElementByID etc.)
@WilkyRL Oui et non, vous pouvez par la façon dont il est implémenté lire le html de ce qui se trouve au-dessus du script. Eventuellement document.write un élément positionné absolu qui apparaît au-dessus de ce qui a déjà été rendu. Mais, ce n'est peut-être pas la méthode dans laquelle vous souhaitez écrire la page. Alternativement, vous pouvez utiliser des transitions CSS3 pour rendre la page comme vous le souhaitez.