1
votes

Récupère le HTML du document avant document.write ();

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


0 commentaires

3 Réponses :


1
votes

Essayez ceci:

document.documentElement.outerHTML

ou cela:

document.documentElement.innerHTML


1 commentaires

ê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



1
votes

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


1 commentaires

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");}});}); et pourtant la fenêtre s'est ouverte après la page chargée. Qu'est-ce qui ne va pas?



1
votes

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.


2 commentaires

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.