Bien que la question stackoverflow a demandé comment laisser votre extension parler au DOM. Il y a de nombreuses façons, une façon est à travers chrome.tabs.executeScript, et une autre façon est à travers le passage des messages comme je l'ai expliqué dans cette question.
Pour revenir à votre question, vous pouvez utiliser XPath pour rechercher dans le DOM. C'est assez puissant. Par exemple, vous avez dit que vous voulez rechercher <div id="hello">
, vous pouvez le faire comme ceci:
var nodes = document.evaluate("//div[@id='hello']", document, null,
XPathResult.ANY_TYPE, null)
var resultNode = nodes.iterateNext()
if (resultNode) {
// Found the first node. Output its contents.
alert(resultNode.innerHTML);
}
Maintenant, pour votre deuxième exemple, la même chose .. <a href="http://bananas.com">I am married to a banana</a>
var nodes = document.evaluate("//a[@href='http://bananas.com']/text()[contains(.,'married')]",
document, null,
XPathResult.ANY_TYPE, null)
var resultNode = nodes.iterateNext()
if (resultNode) {
// Found the first node. Output its contents.
alert('This guy is weird');
}
Eh bien, vous pouvez utiliser XPath qui fonctionne parfaitement dans Chrome, et vous pouvez rendre votre requête simple, comme trouver des nœuds que vous voulez ou même complexes avec des détails. Vous pouvez interroger n'importe quel noeud, puis effectuer un post-traitement si vous le souhaitez également.
Espérons que cela a aidé. Souvenez-vous que tout ceci devrait se trouver dans un content script dans l'extension Chrome. Et si vous voulez que votre extension communique avec cela, vous pouvez utiliser Message Passing comme je l'ai expliqué dans l'autre article. Donc, fondamentalement, dans votre popup.html, vous envoyez une requête au script de contenu pour vous trouver du texte. Votre script de contenu renverra une réponse à partir de son rappel. Pour envoyer la requête, vous devez utiliser chrome.tabs.sendRequest et dans le script de contenu. Vous écoutez cette requête et la gérez. Comme je l'ai expliqué dans l'autre stackoverflow question.
droit, mais comment puis-je m'assurer que le code jQuery que j'exécute affecte la page affichée dans l'onglet, et non 'popup.html'? –
@Sean Mohamed Mansour a expliqué que dans son dernier paragraphe plutôt bien. Je viens de suggérer une alternative plus facile que xpath (à mon avis). – serg