0

我正在关注Mozilla Docs中的示例

tabs.on('activate', function(tab) {
  tab.attach({
    contentScript: 'self.postMessage(document.body.innerHTML);',
    onMessage: function (message) {
      console.log(message);
    }
  });
});

像这样稍微修改一下。

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("After tab : " + bodyHTML);首先执行然后console.log("From attach : " + bodyHTML);. 可能是什么问题,我如何订购执行顺序?

4

1 回答 1

4

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

于 2013-03-26T03:41:47.190 回答