Firefox addon Firefox插件SDK选项卡访问

Firefox addon Firefox插件SDK选项卡访问,firefox-addon,firefox-addon-sdk,Firefox Addon,Firefox Addon Sdk,我遵循的是一个来自 像这样稍加修改 var bodyHTML; tabs.on('activate', function(tab) { tab.attach({ contentScript: 'self.postMessage(document.body.innerHTML);', onMessage: function (message) { bodyHTML = message; console.log("From attach : " + bo

我遵循的是一个来自

像这样稍加修改

var bodyHTML;
tabs.on('activate', function(tab) {
  tab.attach({
    contentScript: 'self.postMessage(document.body.innerHTML);',
    onMessage: function (message) {
      bodyHTML = message;
      console.log("From attach : "  + bodyHTML);
    }
  });
});
console.log("After tab : " + bodyHTML);
现在,当我执行这个插件时,
console.log(“在tab:+bodyHTML之后),然后执行
console.log(“从附件:+bodyHTML”)。问题可能是什么?我如何安排执行顺序?

调用
tabs.on()
会设置一个事件。它不会直接导致其他任何事情发生。
onMessage
属性中的函数由内容脚本发布的消息触发,内容脚本本身由激活选项卡(通常是访问网页)触发。
console.log()
在其上方的
tabs.on()
调用之后执行,很可能是在附加任何选项卡之前。
tabs.on()
调用设置事件。它不会直接导致其他任何事情发生。
onMessage
属性中的函数由内容脚本发布的消息触发,内容脚本本身由激活选项卡(通常是访问网页)触发。
console.log()
在其上方的
tabs.on()
调用之后执行,最有可能在附加任何选项卡之前执行

var bodyHTML;
tabs.on('activate', function(tab) {
  tab.attach({
    contentScript: 'self.postMessage(document.body.innerHTML);',
    onMessage: function (message) {
      bodyHTML = message;
      console.log("From attach : "  + bodyHTML);
    }
  });
});
console.log("After tab : " + bodyHTML);