Açılır penceremden activeTab DOM içeriğine erişmeye çalışıyorum. İşte manifestom:
{
"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"
}
}
Arka plan komut dosyalarının (kalıcılığı olan olay sayfaları: yanlış) veya içerik_ komut dosyalarının doğru yol olup olmadığı konusunda gerçekten kafam karıştı. Tüm belgeleri ve diğer SO gönderilerini okudum ve hala bana mantıklı gelmiyor.
Biri neden birini diğerine kullandığımı açıklayabilir mi?
İşte denediğim background.js:
chrome.extension.onMessage.addListener(
function(request, sender, sendResponse) {
// LOG THE CONTENTS HERE
console.log(request.content);
}
);
Ve bunu sadece açılır konsoldan çalıştırıyorum:
chrome.tabs.getSelected(null, function(tab) {
chrome.tabs.sendMessage(tab.id, { }, function(response) {
console.log(response);
});
});
Ben alıyorum:
Port: Could not establish connection. Receiving end does not exist.
GÜNCELLEME:
{
"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);
});
});
Çalıştırdığımda hala aynı hatayı alıyorum:
undefined
Port: Could not establish connection. Receiving end does not exist. lastError:30
undefined
chrome.runtime.sendMessageMesajları BackgroundPage'e ve Popup'lara gönderir.chrome.tabs.sendMessageContentScripts'e mesaj gönderir.