Не могу отправить сообщение из фонового скрипта в скрипт контента - PullRequest
0 голосов
/ 01 мая 2020

Я пытаюсь отправить сообщение из фонового скрипта в скрипт контента, и он не работает, попробовал несколько решений, которые я нашел, но ни одно из них не работает.

Я проверил, что фон и контент оба скрипта работают правильно.

Я пытался использовать chrome .runtime \ extention, а также с сообщением и запросом ...

надеюсь, вы могли бы сказать мне, что я делаю неправильно.

манифест:

{
  "manifest_version": 2,
  "name": "ChangeLang",
  "description": "change written text lang",
  "version": "1.3",
  "permissions": ["storage", "contextMenus", "activeTab", "tabs"],

  "browser_action": {
    "default_icon": "icon.png",
    "default_popup": "popup.html"
  },

  "browser_action": {
    "name": "Click to change the icon's color"
  },

  "content_scripts": [{
    "matches": ["<all_urls>"],
    "js": ["changelang.js"]
  }],

  "background": {
    "scripts": ["background.js"]
  }
}

фон. js:

chrome.browserAction.onClicked.addListener(function(info, tab) {
  alert("click"); // this alert works
  chrome.tabs.sendMessage(tab.id, {
    "functiontoInvoke": "change"
  });
  alert("click"); // this alert doesn't works
});

содержание. js:

function changeLang() {
  // do something
}

chrome.runtime.onMessage.addListener(function(message, sender, callback) {
  alert("msg"); // never worked
  if (message.functiontoInvoke == "change") {
    changeLang();
  }
});

1 Ответ

0 голосов
/ 01 мая 2020

Я думаю, что ваш код должен выглядеть следующим образом:

chrome.browserAction.onClicked.addListener(function(info, tab) {
  alert("click"); // this alert works
  chrome.tabs.sendMessage(tab.id, {
    "functiontoInvoke": "change"
  }, function(response) {
         response.yourFunc();
     });
  alert("click"); // this alert doesn't works
});

chrome.runtime.onMessage.addListener(function(message, sender, callback) {
  alert("msg"); // never worked
  if (message.functiontoInvoke == "change") {
    callback({yourFunc: changeLang()});
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...