2010-10-17 6 views
0

J'essaye d'analyser HTML dans le navigateur. Le navigateur reçoit 2 fichiers HTML en tant que chaînes, par exemple. HTML1 et HTML2. J'ai maintenant besoin d'analyser ces "documents" comme on analyserait le document courant. C'est pourquoi je me demandais s'il était possible de créer des documents personnalisés basés sur ces chaînes HTML (ces chaînes sont fournies par le serveur ou l'utilisateur).Possibilité de créer des "DOM" personnalisés en chargeant du HTML à partir d'une chaîne en Javascript?

Alors que par exemple les éléments suivants serait valable. $ (html1Document) $ ("# someDivID") ...

Si quelque chose ne sait pas, s'il vous plaît me demander de préciser plus.

Merci.

Répondre

3
var $docFragment = $(htmlString); 

$docFragment.find("a"); // all anchors in the HMTL string 

Notez que cela ne tient pas toutes les balises de structure du document (<html>, <head> et <body>), mais tout contenu des balises seront disponibles.

+0

Probablement ce dont j'ai besoin. Cependant, comment cela gérerait-il le script, html, les balises de tête, etc.? Cela ne les modifierait-il pas? – Tom

+0

@Define: "handle". (les balises de script seront retournées mais pas évaluées/exécutées) – Tomalak

+0

Fondamentalement les effets secondaires mentionnés par Nikita Rybak. Mais je suppose que cela ne s'appliquera pas ici parce que je ne fais que chercher une chaîne, sans l'ajouter au document. – Tom

1

Vous pouvez toujours ajouter votre code HTML à un div masqué (bien que innerHTML ou jQuery .html(..)). Il ne sera pas traité exactement comme un nouveau document, mais pourra toujours en rechercher le contenu.

Il a quelques effets secondaires, cependant. Par exemple, si votre code HTML définit des balises script, elles seront chargées. En outre, le navigateur peut supprimer (et supprimera probablement) html, body et des balises similaires.

modifier
Si vous avez besoin spécifiquement title et balises similaires, vous pouvez essayer iframe contenu de chargement de votre serveur.

+0

Comment cela fonctionnerait avec des éléments non-corps tels que les titres et javascript? Cela ne causerait-il pas de problèmes/conflits? – Tom

+0

@Tom J'ai mis à jour ma réponse à ce sujet. En particulier, les tags de script sont agaçants: si vous avez supprimé du contenu d'un autre serveur, ils pointeront vers le vôtre maintenant. –

1

Avec jQuery, vous pouvez le faire:

$(your_document_string).someParsingMethod().another(); 
Questions connexes