某些消息值始终未定义

Certain message values always undefined

本文关键字:未定义 消息      更新时间:2023-09-26

发送内容脚本消息:

$(document).ready(function() {
  chrome.runtime.sendMessage({
    action: 'Action',
    actType: 'Type',
    value: 1
  });
...

在下面的函数中,我可以获得request.action和request.value的值,但request.actType总是返回undefined。如何获取actType的值?

//Background script
chrome.runtime.onMessage.addListener(
  function(request, sender, sendResponse) {
...
} else if (request.action == 'GainXP') {
    chrome.storage.sync.get('X', function(result) {
      addType(String(request.actType));
      var x = parseInt(result.X);
      x += parseInt(request.value);
      chrome.storage.sync.set({'X': x}, function() {
        chrome.runtime.sendMessage({
          action: 'CheckX'
        });
      });
    });
  }
...
function addType(x) {
  if (typeof x === undefined) {
    return;
  } else {
    if (x == "Type1") {
      chrome.storage.sync.get('type1count', function(result) {
        var newtypes = parseInt(result.type1count) + 1;
        chrome.storage.sync.set({'type1count': newtypes}, function() {});
        return;
      });
    }

编辑:添加了更多相关代码,以帮助理解问题的上下文。此外,如果在addType调用之前和addType调用之后插入警报,则只执行第一个警报。

我发现了这个问题。我的清单引用了一个旧的缩小内容脚本,该脚本没有正确设置actType消息值。之后,我不得不重新排序我的存储回调,所有相关数据都在用chrome.storage.sync.

更新