某些消息值始终未定义

时间:2014-10-20 23:02:01

标签: javascript google-chrome-extension

内容脚本消息发送:

$(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调用之后插入警报,则只执行第一个警报。

1 个答案:

答案 0 :(得分:0)

我想出了这个问题。我的清单引用了一个较旧的缩小内容脚本,该脚本没有正确设置actType消息值。接下来,我不得不重新安排我的存储回调,所有相关数据都在使用chrome.storage.sync进行更新。