2014-11-16 2 views
0

Я получил эту ошибку с кодом ниже:ошибка обмена данными между backgroundjs и contentScriptjs

Could not establish connection. Receiving end does not exist. 

мои background.js

chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { 
    chrome.tabs.sendMessage(tabs[0].id, {greeting: "hello"}, function(response) { 
    if(chrome.runtime.lastError) { 
     console.error(chrome.runtime.lastError.message); 
     return; 
    } 
    console.log(response.farewell); 
    console.log('ytr'); 
    }); 
}); 

и мои contentScript.js

chrome.extension.onMessage.addListener(function (request, sender, sendResponse) { 
    alert(request.greeting); 
}); 

часть моей manifest.json

"background": { 
    "scripts": ["background.js"] 
    }, 
    "permissions": [ 
    "https://*/*", 
    "http://*/*", 
    "activeTab", 
    "storage", 
    "tabs" 
    ], 
    "content_scripts": [ 
    { 
     "matches": ["https://*/*", "http://*/*"], 
     "js": ["jquery.js","contentScript.js"], 
     "css": ["style.css"] 
    } 
    ] 

Интересно, что в моем случае не так.

ответ

0

Возможно, вы используете этот код, пока окно devtools активно. Я могу воспроизвести проблему, запустив этот код с панели справочной страницы, но не при активной регулярной вкладке. Попробуйте запустить console.log ("URL =" + tabs [0] .url), чтобы увидеть, активна ли та, которую вы действительно ожидаете.

+0

Я не понимаю, что вы имеете в виду, бегите туда? –

+0

Я имею в виду, что проблема возникнет, если консоль разработчика открыта. Например, консоль разработчика для веб-страницы - это то, что открывается, если вы перейдете в настройки Chrome, выберите «Дополнительные инструменты», а затем выберите «Консоль разработчика». Или вы можете просмотреть консоль разработчика вашего расширения, перейдя в chrome: // расширения, установите флажок «режим разработчика» и нажмите ссылку background.js, чтобы открыть консоль разработчика для вашего расширения. Если это активные окна, sendMessage покажет ошибку, которую вы видите. Попробуйте использовать команду console.log. Я предложил посмотреть URL-адрес, по которому отправляется сообщение – donaddon

Смежные вопросы