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
属性的内容吗?
答案 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');
}
有人可以添加为什么会发生这种情况吗?