2010-01-14 54 views
10

Tôi đã tìm kiếm trên web để tìm hiểu cách truy cập các tab DOM hiện tại để trích xuất thông tin ra khỏi một trang từ background.html. Cho đến nay tôi đã không có may mắn, hoặc ít nhất là không có gì tôi có thể làm việc đúng cách.Tiện ích mở rộng của Google Chrome - Truy cập DOM

Để chỉ ra sự cố đơn giản. Tôi muốn lấy src của một iFrame trên trang. Bất kỳ đề xuất?

Trả lời

7

Một cách, bạn coi đây là yêu cầu một lần đối với tập lệnh nội dung sẽ tìm nạp vị trí bạn muốn truy cập. http://code.google.com/chrome/extensions/messaging.html#simple

Về cơ bản, kịch bản nội dung của bạn thiết lập người nghe:

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

Và trang nền của bạn gửi một yêu cầu sống duy nhất:

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

Khi bạn gửi thư trả lời của bạn, bạn gửi nó như JSON dữ liệu, bạn có thể lấy bất cứ điều gì bạn muốn (chẳng hạn như html, dom, văn bản, vv).

Đó hiện là cách duy nhất để cho trang nền biết bất kỳ điều gì về nội dung của trang. Hãy nhớ rằng bạn sẽ cần các tập lệnh nội dung và quyền tab.

+8

Lưu ý rằng câu trả lời này đã lỗi thời. 'SendRequest' và 'getSelected' không được chấp nhận. Tập lệnh được cung cấp không hoạt động. – sbichenko

+4

aaaand nên được thay thế bằng sendMessage/onMessage trong Chrome 20 –

+1

aaaaavà một ví dụ sẽ tuyệt vời. :-) – Ajax

Các vấn đề liên quan