2009-02-05 7 views
2

J'écris un bookmarklet, c'est-à-dire un signet qui contient javascript au lieu d'une URL, et j'ai quelques problèmes. En fait, je n'arrive pas à me rappeler comment je peux obtenir le contenu de la page sous forme de chaîne, donc je peux appliquer une expression régulière pour trouver ce que je veux. Pouvez-vous s'il vous plaît m'aider à ce sujet? Avant que quelqu'un ne le suggère, je ne peux pas utiliser getElementBy (Id/Name/Tag), car les données que je recherche sont des commentaires HTML et des balises internes, donc je ne pense pas que cela fonctionnerait.Comment obtenir le contenu complet de la page sous forme de chaîne en javascript?

Merci.

Répondre

8

Vous pouvez y accéder via:

document.body.innerHTML 
+0

Bon sang innerHTML, comment pourrais-je avoir oublié? THX. – Antoine

1

donc je peux appliquer une expression régulière pour trouver ce que je veux

Do. Ne pas. Utilisation. Regex. À. Parse. HTML

Surtout quand le navigateur l'a déjà analysé pour vous! Allons!

les données que je suis à la recherche est HTML commenté

Vous pouvez très bien saisir le contenu de commentaires sur les DOM. par exemple.

<div id="mything"><!-- la la la I'm a big comment --></div> 

alert(document.getElementById('mything').firstChild.data); 

Et si vous devez rechercher les DOM pour les éléments de commentaire:

// Get comment descendents 
// 
function dom_getComments(parent, recurse) { 
    var results= []; 
    for (var childi= 0; childi<parent.childNodes.length; childi++) { 
     var child= parent.childNodes[childi]; 
     if (child.nodeType==8) // Node.COMMENT_NODE 
      results.push(child); 
     else if (recurse && child.nodeType==1) // Node.ELEMENT_NODE 
      results= results.concat(dom_getComments(child)); 
    } 
    return results; 
} 
+1

Merci pour l'info, mais le code que j'écris est pour un bookmarklet, une seule ligne de code dans un signet. Et les bookmarklets dans IE sont limités à 470 caractères, donc je vise un maximum de simplicité et de brièveté. – Antoine

+0

@Antoine Vous pouvez toujours créer une balise de script qui charge un fichier javascript externe de longueur arbitraire. – skroth

Questions connexes