2013-03-25 64 views
0

我下面一个例子来自Mozilla DocsFirefox的插件SDK选项卡访问

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

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