Tôi đang cố gắng để Tiện ích mở rộng của Chrome chạy chức năng init()
bất cứ khi nào trang mới được tải, nhưng tôi đang gặp sự cố khi cố gắng hiểu cách thực hiện điều này. Từ những gì tôi hiểu, tôi cần phải làm như sau trong background.html:Mã mở rộng của Chrome so với tập lệnh Nội dung và tập lệnh được nhúng
- Sử dụng
chrome.tabs.onUpdated.addListener()
để kiểm tra khi trang được thay đổi - Sử dụng
chrome.tabs.executeScript
để chạy một kịch bản.
Đây là code tôi có:
//background.html
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
chrome.tabs.executeScript(null, {code:"init();"});
});
//script.js
function init() {
alert("It works!");
}
Tôi cũng tự hỏi nếu init() chức năng sẽ có quyền truy cập vào các chức năng khác của tôi nằm trong các tập tin JS khác?
Cảm ơn bạn về mẹo 'chrome .tabs.onUpdated' kích hoạt hai lần. Vì vậy, câu hỏi của tôi tôi đoán là làm thế nào tôi sẽ tiêm 'init()'? Tôi có nên tiêm tất cả các JavaScripts của mình không? 'init()' thường được gọi khi người dùng nhấp vào biểu tượng Hành động trình duyệt, và 'init()' kích hoạt một loạt các hàm khác. – Jon
@ user1277607 Khi nó phải truy cập bất kỳ biến toàn cục nào của trang, hãy tiêm tập lệnh. Khi 'hàm init' phải truy cập cả mã trang và tiện ích mở rộng, hãy sử dụng tập lệnh nội dung. Xem ** [câu trả lời được liên kết] (http://stackoverflow.com/a/9517879/938089?building-a-chrome-extension-inject-code-in-a-page-using-a-content-script) * * để xem cách chèn tập lệnh và ** [câu trả lời này] (http://stackoverflow.com/a/9636008/938089?chrome-extension-retrieving-gmails-original-message) ** để biết hướng dẫn triển khai Tập lệnh nội dung phải truy cập vào các biến của trang. –
cảm ơn bạn rất nhiều. Nó hoạt động rất tốt :) – Jon