2012-02-06 17 views
4

URLがいくつかのパターンに一致する場合にウィジェットを有効にしたいのですが、問題はページモッズルールが無効な場合でもウィジェットを無効にしたい場合ですURLにマッチする 私はいくつかのタブが開いている場合、それらの間で切り替えると、アクティブなタブのURLがルールに合致しない場合や、それ以外の場合にウィジェットを無効にする必要があります。ウィジェットの状態(オン/オフ)は、ページの読み込みとタブの切り替え時に変更する必要があります。firefox addon page-mod - URLが一致しない場合

私はしばらくこの問題に取り組んできましたが、解決策はまだ見つかりませんでした。

私は今でだ場所です:

// Activates on matching one of the site domains, but I also want to deactivate 
// it when it does not match 
var pageMod = require("page-mod"); 
pageMod.PageMod({ 
    include: ["*.site1.com","*.site2.com"], 
    onAttach: function() { 
     alert("Widget activated!"); 
    }); 
}); 

は、任意の助けをありがとう!

答えて

1

あなたがしようとしていることを正しく理解していれば、page-modは間違った解決策です。単にアクティブなタブを聴きたいだけです。

var tabs = require("tabs"); 
tabs.on("ready", function(tab) 
{ 
    if (tab == tabs.activeTab) 
    updateActiveTab(tab); 
}); 
tabs.on("activate", function(tab) 
{ 
    updateActiveTab(tab); 
}); 

あなたupdateActiveTab()機能がtab.urlをチェックして、ウィジェットを有効または無効にする必要があります:ready(新しいURLをロード)とactivateに耳を傾け、そのためtabs moduleを使用して、イベントを(アクティブなタブが変更されました)。あなただけのテストにこのような正規表現か何かを使用することができます

var {MatchPattern} = require("match-pattern"); 
var patterns = [ 
    new MatchPattern("*.site1.com"), 
    new MatchPattern("*.site2.com") 
]; 

function updateActiveTab(tab) 
{ 
    var matches = false; 
    for (var i = 0; i < patterns.length; i++) 
    if (patterns[i].test(tab.url)) 
     matches = true; 
    if (matches) 
    activateWidget(); 
    else 
    deactivateWidget(); 
} 

しかし、もちろんの:あなたはpage-modに指定したもののようにそのためのパターンを使用したい場合、あなたはこのように、内部match-pattern moduleを使用する必要がありますtab.urlmatch-patternモジュールを使用する必要はありません。

免責事項:コード例は、理解しやすくするためのものであり、テストされていません。

+0

はい、まさに私がやりたかったことです。その間に私はそれを理解しました:D ..あなたの助けをありがとう! – node37

関連する問題