Передача сообщений Background.html -> Content Script - PullRequest
1 голос
/ 29 марта 2011

В моем background.html есть следующее, чтобы отправитьRequest на contentcript ...

chrome.tabs.getSelected(null,function(tab)
    {
        chrome.tabs.sendRequest(tab.id,{req:"func"});
    }); 

Однако, похоже, это не работает.Что я делаю не так?

Часть файла манифеста ...

 "background_page": "background.html",
"browser_action":
{
    "default_icon": "icon.png",
    "popup": "popup.html"
},
"permissions": [
    "tabs",
    "http://*/*",
    "https://*/*",
    "notifications",
    "contextMenus"
],
"options_page": "options.html",
"content_scripts": [
    {
        "matches": ["http://*/*","https://*/*"],
        "js": ["contentScript.js","jquery.js"],
        "all_frames": false
    }
],

contentscript ...

    chrome.extension.onRequest.addListener(
 function(request, sender, sendResponse)
 {
switch(request.req)
{
        case "func":
        func();
        sendResponse({});
        break;
 default:
        sendResponse({});
 }
 });

Ответы [ 2 ]

2 голосов
/ 29 марта 2011

Сделать это на фоновой странице:

chrome.tabs.getSelected(null,function(tab)
{
    chrome.tabs.sendRequest(tab.id,{req:"func"}, function(response){
        alert(response.req); // Get The response
    });
}); 

А в скрипте содержимого:

sendResponse({ req: 'Your Response' });

Также измените свой манифест на:

{
"background_page": "background.html",
"browser_action":
{
    "default_icon": "icon.png",
    "popup": "popup.html"
},
"permissions": [
    "tabs",
    "http://*/*",
    "https://*/*",
    "notifications",
    "contextMenus"
],
"options_page": "options.html",
"content_scripts": [
    {
        "matches": ["http://*/*","https://*/*"],
        "js": ["contentScript.js","jquery.js"],
        "all_frames": false
    }
],
"name" : "FirstExtension",
"version" : "1.0",
}

PS: необходимо указать имя и версию в манифесте ...

0 голосов
/ 29 марта 2011

Ваш код работает нормально для меня. Возможно, на этой странице не загружается скрипт содержимого, когда вы отправляете запрос. У вас есть какое-то состояние до chrome.tabs.getSelected? Вы не можете просто запустить его сразу, вам нужно быть уверенным, что вкладка загружается первой.

PS. Также в вашем манифесте вы, вероятно, захотите загрузить jquery перед вашим скриптом контента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...