Tôi đang cố gắng truy cập nội dung DOM ActiveTab từ cửa sổ bật lên của mình. Đây là bản kê khai của tôi:
{
"manifest_version": 2,
"name": "Test",
"description": "Test script",
"version": "0.1",
"permissions": [
"activeTab",
"https://api.domain.com/"
],
"background": {
"scripts": ["background.js"],
"persistent": false
},
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'",
"browser_action": {
"default_icon": "icon.png",
"default_title": "Chrome Extension test",
"default_popup": "index.html"
}
}
Tôi thực sự bối rối không biết tập lệnh nền (các trang sự kiện có tính kiên trì: false) hay content_scripts là cách để đi. Tôi đã đọc tất cả các tài liệu và các bài đăng SO khác và nó vẫn không có ý nghĩa gì đối với tôi.
Ai đó có thể giải thích tại sao tôi có thể sử dụng cái này hơn cái kia không.
Đây là background.js mà tôi đang thử:
chrome.extension.onMessage.addListener(
function(request, sender, sendResponse) {
// LOG THE CONTENTS HERE
console.log(request.content);
}
);
Và tôi chỉ thực hiện điều này từ bảng điều khiển bật lên:
chrome.tabs.getSelected(null, function(tab) {
chrome.tabs.sendMessage(tab.id, { }, function(response) {
console.log(response);
});
});
Tôi nhận được:
Port: Could not establish connection. Receiving end does not exist.
CẬP NHẬT:
{
"manifest_version": 2,
"name": "test",
"description": "test",
"version": "0.1",
"permissions": [
"tabs",
"activeTab",
"https://api.domain.com/"
],
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["content.js"]
}
],
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'",
"browser_action": {
"default_icon": "icon.png",
"default_title": "Test",
"default_popup": "index.html"
}
}
content.js
chrome.extension.onMessage.addListener(
function(request, sender, sendResponse) {
if (request.text && (request.text == "getDOM")) {
sendResponse({ dom: document.body.innerHTML });
}
}
);
popup.html
chrome.tabs.getSelected(null, function(tab) {
chrome.tabs.sendMessage(tab.id, { action: "getDOM" }, function(response) {
console.log(response);
});
});
Khi tôi chạy nó, tôi vẫn gặp lỗi tương tự:
undefined
Port: Could not establish connection. Receiving end does not exist. lastError:30
undefined
chrome.runtime.sendMessage
gửi tin nhắn đến Trang nền và cửa sổ bật lên.chrome.tabs.sendMessage
gửi tin nhắn đến ContentScripts.