chrome extension:从弹出窗口中保存背景中的数据属性

时间:2014-04-07 03:31:56

标签: javascript jquery google-chrome-extension

background.js

function getFrame() {
  // popup.js can access background's frame with this function
  return $('iframe')[0];
}

function updateStatus(status) {
  // popup.js should call this function to update the frame's status
  var frame = $('iframe')[0];
  $(frame).data('status', status);
}

popup.js

..DOM READY
var bg = chrome.extension.getBackgroundPage();
('.hello').click(function () {
  bg.updateStatus('ready')
}
// <ASSUME THE ABOVE EVENT HAS BEEN TRIGGERED HERE>
var frame = bg.getFrame();
console.log($(frame).data('status')) // undefined <- HOWEVER, THIS IS THE RESULT

我正在尝试将状态存储在后台的框架中,以便在弹出窗口重新打开时检索它。但是,结果就是上述情况。有人可以解释为什么会这样吗?我错过了关于data属性的内容吗?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。我不得不从frame检索popup元素,而是必须执行以下操作:

<强> background.js

function getStatus() {
  // popup.js MUST retrieve the current status this way
  // $(bg.getFrame()).data('status') IS BAD
  var frame = $('iframe')[0];
  return $(frame).data('status');
}

有人可以添加为什么会发生这种情况吗?