谷歌浏览器扩展 - 访问DOM

10

我一直在网上寻找如何访问当前标签的 DOM,以从 background.html 中提取页面信息。到目前为止,我还没有找到解决方法,或者至少没有成功地使它正常工作。

简单来说,我想获取页面上 iFrame 的 src。有什么建议吗?

1个回答

7

一种方法是将其视为单次请求,发送到内容脚本,该脚本将获取您想要访问的DOM。

http://code.google.com/chrome/extensions/messaging.html#simple

基本上,您的内容脚本设置监听器:

chrome.extension.onRequest.addListener(
  function(request, sender, sendResponse) {
    if (request.greeting == "hello")
      sendResponse({farewell: "goodbye"});
    else
      sendResponse({}); // snub them.
  });

您的背景页面发送一个单个的存活请求:

chrome.tabs.getSelected(null, function(tab) {
  chrome.tabs.sendRequest(tab.id, {greeting: "hello"}, function(response) {
    console.log(response.farewell);
  });
});

当您发送响应时,将其作为JSON数据发送,您可以获取任何想要的内容(如html、dom、文本等)。
这是目前唯一的让后台页面了解页面内容的方式。请记住,您需要使用内容脚本和选项卡权限。

8
请注意,这个答案已经过时了。'SendRequest'和'getSelected'已被弃用。所提供的脚本无法运行。 - Stas Bichenko
4
在 Chrome 20 中,"aaaand" 应该替换为 "sendMessage/onMessage"。 - Mc-

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接