2013-03-25 103 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()之後立即執行,很可能在連接任何選項卡之前。