2012-03-25 37 views
21

Tôi muốn kiểm tra một số giá trị trong nội dung của trang trình duyệt chrome khi nó hoàn toàn nạp như thếTrên trang sự kiện tải trong phần mở rộng Chrome

if(document.body.innerText.indexOf("Cat") !=-1) 

đâu và khi nào tôi có thể làm kiểm tra của tôi? xin vui lòng cho tôi một ví dụ rõ ràng Tôi đã đọc một số điều về "Background.html" và "Tập lệnh nội dung" nhưng tôi không thể làm

Trả lời

48

Register a content script in the manifest file tại "run_at": "document_idle" (là mặc định) và đặt mã của bạn trong tệp tập lệnh nội dung . Sau đó, tập lệnh sẽ được chạy khi trang đã sẵn sàng.

Nếu bạn muốn phát hiện từ trang nền cho dù trang được tải hoàn toàn, hãy sử dụng sự kiện chrome.webNavigation.onCompleted và thực hiện bất cứ điều gì bạn muốn, chẳng hạn như gọi chrome.tabs.executeScript để thực thi tập lệnh nội dung. Phương pháp này có thể hữu ích hơn phương pháp trước nếu danh sách URL là động hoặc nếu không thể mô tả các mẫu URL bằng cách sử dụng cú pháp match pattern.

chrome.webNavigation.onCompleted.addListener(function(details) { 
    chrome.tabs.executeScript(details.tabId, { 
     code: ' if (document.body.innerText.indexOf("Cat") !=-1) {' + 
       '  alert("Cat not found!");' + 
       ' }' 
    }); 
}, { 
    url: [{ 
     // Runs on example.com, example.net, but also example.foo.com 
     hostContains: '.example.' 
    }], 
}); 

Các webNavigation và chủ quyền đã được thiết lập trong manifest.json, ví dụ:

{ 
    "name": "Test", 
    "version": "1.0", 
    "background": { "scripts": ["background.js"] }, 
    "permissions": [ "webNavigation", "*://*/*" ], 
    "manifest_version": 2 
} 
+0

Cảm ơn Rob W, nhưng tôi có rất nhiều mã sau khi các báo cáo kiểm tra, tôi không thể viết nó sau "code: '" Tôi có thể gọi một hàm không? – JustMe

+2

@ user1291538 Bạn có thể đặt nó trong một tệp riêng trong phần mở rộng và sử dụng 'tệp: 'nameoffile.js'' thay vì' 'mã': '...'' - Xem thêm [tài liệu được liên kết] (http: //code.google.com/chrome/extensions/tabs.html#method-executeScript). –

+0

@Xan, đó là "manifest_version": 2. Không phải 1. – Dudi

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