Saya mencoba mengakses konten DOM activeTab dari popup saya. Ini manifestasi saya:
{
"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"
}
}
Saya benar-benar bingung apakah skrip latar belakang (halaman acara dengan ketekunan: false) atau content_scripts adalah cara yang harus dilakukan. Saya telah membaca semua dokumentasi dan posting SO lainnya dan masih tidak masuk akal bagi saya.
Adakah yang bisa menjelaskan mengapa saya mungkin menggunakan salah satu dari yang lain.
Berikut ini background.js yang saya coba:
chrome.extension.onMessage.addListener(
function(request, sender, sendResponse) {
// LOG THE CONTENTS HERE
console.log(request.content);
}
);
Dan saya hanya menjalankan ini dari konsol popup:
chrome.tabs.getSelected(null, function(tab) {
chrome.tabs.sendMessage(tab.id, { }, function(response) {
console.log(response);
});
});
Saya mendapatkan:
Port: Could not establish connection. Receiving end does not exist.
MEMPERBARUI:
{
"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);
});
});
Ketika saya menjalankannya, saya masih mendapatkan kesalahan yang sama:
undefined
Port: Could not establish connection. Receiving end does not exist. lastError:30
undefined
chrome.runtime.sendMessage
mengirim pesan ke BackgroundPage dan ke Popup.chrome.tabs.sendMessage
mengirim pesan ke ContentScripts.