0
我試圖使用Firefox SDK將現有的Chrome擴展轉換爲與Firefox等效的文件。使用Firefox SDK的選項卡監聽器
我的插件需要檢測Gmail(mail.google.com)是否在當前標籤中處於打開狀態/活動狀態,如果不是,並且在特定情況下啓動了偵聽器,以便在Gmail標籤中添加一些參數到Gmail的URL將由用戶打開。
使其更清晰,這裏是我的代碼看起來像在Chrome:
background.js [Chrome擴展]
// Reload Gmail Tab(s)
function reloadTab(order, behavior) {
chrome.tabs.query({ currentWindow: true }, function(tabs) {
var countGmailTabs = 0,
ntabs = tabs.length;
for (var i = 0; i < ntabs; i++) {
var t = tabs[i].url;
// Gmail found !
if (/mail.google.com/g.test(t)) {
countGmailTabs += 1;
if(behavior === 'noisy') {
var GmailTab = tabs[i];
// Do something...
} else {
// Reload Tab
chrome.tabs.reload(tabs[i].id);
}
}
}
// Gmail not found !
if (countGmailTabs < 1 && behavior === 'noisy') {
// Start listener
chrome.tabs.onUpdated.addListener(GmailListener);
}
});
}
// Gmail listener
function GmailListener (tabId, info, tab) {
if (/mail.google.com/g.test(tab.url) && info.status === 'loading') {
// Do something...
// Now, let's relieve ourselves from our listener duties
chrome.tabs.onUpdated.removeListener(GmailListener);
return;
}
}
我在Firefox代碼目前看起來是這樣的。棘手的部分是當沒有檢測到Gmail選項卡時爲該選項卡實現監聽器...任何幫助表示讚賞!
main.js [Firefox插件]
var tabs = require('sdk/tabs')
// [...]
// Reload Gmail Tab(s)
function reloadTab(order, behavior) {
var countGmailTabs = 0,
ntabs = tabs.length;
for (var i = 0; i < ntabs; i++) {
var t = tabs[i].url;
// Gmail found !
if (/mail.google.com/g.test(t)) {
countGmailTabs += 1;
if(behavior === 'mute') {
var GmailTab = tabs[i];
// Do something...
} else {
tabs[i].reload();
}
}
}
// Gmail not found !
if (countGmailTabs < 1 && behavior === 'noisy') {
GmailTabListener(order);
}
}
// Gmail Listener (the tricky part)
function GmailTabListener(action) {
tabs.on('open', function(tab){
tab.on('ready', function(tab){
if (/mail.google.com/g.test(tab.url)) {
// Do something...
return;
}
});
});
}
謝謝!將一個監聽器附加到一個pageMod方法上。 – flo