那么,stackoverflow问题问如何让你的扩展与DOM谈话。有许多方法,一种方法是通过chrome.tabs.executeScript,另一种方式是通过消息传递,正如我在该问题中所解释的。
回到您的问题,您可以使用XPath在DOM中进行搜索。它非常强大。比如你说你要搜索<div id="hello">
,你可以做这样的:
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);
}
现在对于你的第二个例子,同样的事情.. <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');
}
那么你可以使用XPath这在Chrome中完美工作,并且可以使查询变得简单,例如查找您想要的节点,甚至可以使细节复杂化。您可以查询任何节点,然后根据需要进行后期处理。
希望有帮助。请记住所有这些都应在Chrome扩展程序中的content script之内。如果您希望您的扩展程序与之通信,则可以使用Message Passing,正如我在其他文章中所解释的那样。所以基本上,在popup.html中,您向内容脚本发送请求以查找文本。您的内容脚本将从回调中发回回复。要发送请求,您应该在内容脚本中使用chrome.tabs.sendRequest。您可以听取该请求并处理该请求。正如我在其他stackoverflow question中所解释的那样。
对,但我如何确保我运行的jQuery代码影响页面中呈现的页面,而不是'popup.html'? – 2010-09-12 18:54:51
@西安穆罕默德曼苏尔解释说,在他的最后一段很好。我只是建议比xpath更容易的选择(在我看来)。 – serg 2010-09-12 20:24:19