Отправить запрос на внедренный контент-скрипт в ContextMenu Click - PullRequest
4 голосов
/ 13 марта 2011

Я ввел код на каждую страницу, которую посещает пользователь.Но я хочу, чтобы этот скрипт запускался, когда пользователь щелкает контекстное меню, созданное тем же расширением.Короче говоря, я должен передать сообщение между background.html и скриптом содержимого, но триггер должен произойти при нажатии контекстного меню.

Вот что я пробовал

// background.html

function subFunction(info,tab){
        var x = info.selectionText;
            alert("x");//This is working fine
        chrome.tabs.getSelected(null, function(tab) {
          chrome.extension.sendRequest({"variable1":x,"type":"y"});
        }); 
    }
chrome.contextMenus.create({"title": "Submit", "onclick": subFunction,"contexts":['selection']});

// myscript.js

chrome.extension.onRequest.addListener(
    function(request, sender, sendResponse) {
        alert("Seems like I am in");
        if(request.type == 'y'){
                   alert("This is" + request.x);
                }
});

Может кто-нибудь сказать мне, где это происходит не так.Из того, что я понял, что-то не так с tabs.getSelected с tab.id в качестве первого параметра.Но поскольку источником клика является контекстное меню, возможно, оно не читает tab.id или не понимает, над какой вкладкой я работаю.

1 Ответ

6 голосов
/ 13 марта 2011

Прежде всего ошибается между chrome.extension.sendRequest и chrome.tabs.sendRequest.Сигнатуры вашего метода неверны для sendRequest, в нем отсутствует параметр (который не является обязательным).Первый параметр - это «идентификатор расширения», в этом случае он должен быть нулевым.

Если вы хотите отправить сообщение на другие страницы расширения, вы используете chrome.extension.sendRequest.Если вы хотите отправить сообщение в ваш контент-скрипт, вам нужно использовать chrome.tabs.sendRequest.

. В этом случае вам нужно использовать chrome.tabs.sendRequest, так как ваш onRequest слушатель живет там.Вам все еще нужен первый параметр, который является идентификатором вашей вкладки.

chrome.tabs.getSelected(null, function(tab) {
    chrome.tabs.sendRequest(tab.id, {"variable1":x,"type":"y"});
}); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...