2010-01-14 72 views
10

我一直在网上搜索,以了解如何访问当前选项卡DOM以从background.html中提取页面中的信息。到目前为止,我没有运气,或者至少没有什么能够正常工作。谷歌浏览器扩展程序 - 访问DOM

简单说明问题。我想在页面上获得一个iFrame的src。有什么建议么?

回答

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'已弃用。提供的脚本不起作用。 – sbichenko 2012-10-04 07:26:10

+4

aaaand应该被替换为Chrome 20 – 2013-05-01 16:21:34

+1

aaaaa中的sendMessage/onMessage,一个例子会非常出色。 :-) – Ajax 2015-12-15 12:47:22