Comment transformer une chaîne HTML en objet DOM dans une extension Firefox ?

Je télécharge une page Web (soupe de balises HTML) avec XMLHttpRequest et je veux prendre la sortie et la transformer en un objet DOM sur lequel je peux ensuite exécuter des requêtes XPATH. Comment convertir une chaîne en objet DOM ?

Il semble que la solution générale consiste à créer une iframe masquée et à y jeter le contenu de la chaîne. Il a été parlé de mettre à jour DOMParser pour supporter text/html mais depuis Firefox 3.0.1 vous obtenez toujours un 1 si vous essayez.

Existe-t-il une autre option que d'utiliser l'astuce iframe cachée ? Et si ce n'est pas le cas, quelle est la meilleure façon de faire l'astuce iframe pour que votre code fonctionne en dehors du contexte des onglets actuellement ouverts (afin que la fermeture des onglets ne gâche pas le code, etc.) ?

Remarquez les overrideMimeType et responseXML.
Le readyState == 4 est 'complété'.

请先 登录 后评论
Steve Willard

Essayez de créer un div

document.createElement( 'div' );

Et puis définissez la balise soupe HTML sur le innerHTML de la div. Le navigateur doit traiter cela en XML, que vous pouvez ensuite analyser.

La propriété innerHTML prend une chaîne qui spécifie une combinaison valide de texte et éléments. Lorsque le innerHTML propriété est définie, la chaîne donnée remplace complètement l'existant contenu de l'objet. Si la chaîne contient des balises HTML, la chaîne est analysé et formaté tel qu'il est placé dans le document.

请先 登录 后评论
Steve Willard

Vous souhaitez donc télécharger une page Web en tant qu'objet XML à l'aide de javascript, mais vous ne souhaitez pas utiliser de page Web ? Étant donné que vous n'avez aucun contrôle sur ce que l'utilisateur fera (fermer des onglets ou des fenêtres ou autre), vous devrez le faire comme un widget OSX Dashboard ou une application distincte. Une extension Firefox fonctionnerait également, à moins que vous n'ayez à vous soucier de la fermeture du navigateur par l'utilisateur.

请先 登录 后评论
Nickolay

Existe-t-il une autre option que d'utiliser l'astuce iframe cachée ?

Malheureusement, non, pas maintenant. Sinon, le code de microrésumé vers lequel vous pointez l'utiliserait à la place.

Et si ce n'est pas le cas, quelle est la meilleure façon de faire l'astuce iframe pour que votre code fonctionne en dehors du contexte des onglets actuellement ouverts (afin que la fermeture des onglets ne gâche pas le code, etc.) ?

Le code que vous avez cité utilise la fenêtre de navigateur récente, donc la fermeture des onglets n'affectera pas l'analyse. La fermeture de cette fenêtre de navigateur interrompra votre chargement, mais vous pouvez y faire face (détecter que le chargement est interrompu et le redémarrer dans une autre fenêtre par exemple) et cela n'arrive pas très souvent.

Vous avez besoin d'une fenêtre DOM pour que l'iframe fonctionne correctement, il n'y a donc pas de solution propre pour le moment (si vous souhaitez utiliser l'analyseur mozilla).

请先 登录 后评论
  • 6 abonnés
  • 0 favoris,397 Feuilleter
  • thelsdj posée à 2023-03-17 12:38