67 votes

Comment puis-je remplacer l'ensemble du nœud HTML à l'aide de jQuery

J'ai une chaîne qui ressemble à:

<html><head><title>example</title></head><body>some example text</body></html>

Je reçois cette chaîne retournée comme résultat d'une requête AJAX.

Je voudrais le navigateur pour le rendu et l'affichage d'une chaîne. L'idée serait de faire quelque chose comme:

$('html').parent().html(myString);

Eh bien, cela ne fonctionne pas. J'ai tenté d'utiliser une IFRAME mais je n'ai pas compris comment faire pour obtenir que le travail soit.

Remarque: Il est impossible pour moi de modifier cette chaîne. Il est également impossible pour moi de régénérer cette chaîne dans un prochain appel vers le serveur (sinon je ne pourrais suffit de rediriger le navigateur vers l'url).

141voto

Jon Benedicto Points 7020

Le document.ouvrir/écrire/fermer les méthodes de faire ce que vous souhaitez:

var newDoc = document.open("text/html", "replace");
newDoc.write(myString);
newDoc.close();

Sauf si vous passez dans le paramètre remplacer, le document.appel ajoute l'historique de la page. De sorte que les utilisateurs, cliquez deux fois sur retour pour revenir à la page précédente.

16voto

Marius Points 27452

Vous pourriez simplement enlever les balises html, et puis mettre le tout à l'intérieur de l'élément html:

$('html').html(myString.replace(/<html>(.*)<\/html>/, "$1"));

3voto

emtrane Points 210

Une autre variante à essayer peut-être

$('html').replaceWith(myString);

http://api.jquery.com/replaceWith/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X