Firefoxの拡張機能の「有効性」といくつかのささいなこと

こんにちは



Mozilla Firefoxの拡張機能を作成することに関するHabrの記事がたくさんあります。

検索を使用すると、たとえば、 hereherehere 、さらにhereの情報を見つけることができます。



しかし、有効な拡張機能に関する記事はまだありません(もしあれば)。



同時に、開発者向けの拡張機能のバリデーターは長い間存在していました。 ここのページの下部で、ログインするにはログインが必要です。



あなたの許可を得て、上記の記事に記載されている情報をコピーしません。

代わりに、「有効な」アドオンを作成するための一般原則を説明しようとします。



そして、いくつか例を挙げてリンクを投げます。











自分の人生を困難にするために、他に何を思いつくことができますか:



  1. XULオーバーレイの場合、「すべてのコード」となるJSファイルを1つだけ作成することが望ましいです(「Highlander」のように、1つだけを残す必要があります)。



    さらに、このファイルのコード全体は、次のようにクロージャー内にあります。



    ( function (){

    var e;

    try {



    [ ]



    } catch (e){ window.alert(e); }

    })();



    * This source code was highlighted with Source Code Highlighter .








  2. 「多数のディレクトリ内の多数の小さなファイル」上にコードを「分散」させますか?



    それも可能です!



    var JS_Loader = function ( path_to_file, object_where_file_will_be_loaded ){



    Components.classes[ '@mozilla.org/moz/jssubscript-loader;1' ]

    .getService(Components.interfaces.mozIJSSubScriptLoader)

    .loadSubScript( path_to_file , object_where_file_will_be_loaded ); }

    }



    var our_scope_object = {};



    // USING:



    JS_Loader( 'some_path to chrome:// or resource://' , our_scope_object);



    /*



    , "" 'some_path' our_scope_object.

    , 'some_path' this our_scope_object



    */




    * This source code was highlighted with Source Code Highlighter .








    既知の「グリッチ」が原因で、また、検証中に警告が失敗するという事実のために、このオプションがあなたに合わない場合は、「絶対に正しい」ことを行う必要があります:



    Components.utils.import( path_to_file , object_where_file_will_be_loaded )



    * This source code was highlighted with Source Code Highlighter .








    ただし、わずかに異なる「トラブル」が発生します。



  3. 一般に、もちろん、コントロールのすべての「ハング」 addEventListenerアクションを個別の関数に削除できます...しかし、存在しないコントロールにイベントを登録しようとすると、「インシデント」があることを覚えておく必要があります。



    とりわけ、これは私たちを助けます!:



    window.addEventListener( "aftercustomization" , function (evt){



    [ , <br> , toolbar ]



    }, false );




    * This source code was highlighted with Source Code Highlighter .












最後に、いくつかの「楽しい」ささいなことをさせてください。



「拡張」プロパティを操作します。



var ADDON_ID = '[ em:id install.rdf ]' ;

var EXTENSION = {};

if (Application.extensions){ EXTENSION = Application.extensions.get(ADDON_ID); }

else { Application.getExtensions( function (extensions){ EXTENSION = extensions.get(ADDON_ID); }); }

return {

ext : function (){ return EXTENSION; }

, ver : function (){ return EXTENSION.version; }

}




* This source code was highlighted with Source Code Highlighter .








ファイルシステム内の拡張機能へのパス:



var addonLocation = '' ;

Components.utils.import( "resource://gre/modules/AddonManager.jsm" );

AddonManager.getAddonByID( '[ em:id install.rdf ]' , function (addon) {

addonLocation = addon.getResourceURI( "" ).QueryInterface(Components.interfaces.nsIFileURL).file;

} );




* This source code was highlighted with Source Code Highlighter .








ブリンカー...



var blinker = function (cnt){

for ( var i = 1; i < cnt; i++){

( function (ist){

// window.alert('' + ist + ' ' + (ist % 2));

window.setTimeout( function (){ show_status((ist % 2)); }, ist*450 );

})(i);

}

}



/*

  

show_status, , 1 0



"" , - ""

  

*/




* This source code was highlighted with Source Code Highlighter .








結論として、いくつかのリンクを提供したいと思います。



コメント不要: addons.mozilla.org/en-US/developers

Mozilla開発者ネットワーク: developer.mozilla.org/en-US



これを注意深く見ていきます。

XUL仕様: developer.mozilla.org/en/XUL

developer.mozilla.org/en/JavaScript

developer.mozilla.org/en/DOM

developer.mozilla.org/en/XUL_Overlays

developer.mozilla.org/en/XUL_controls



そして、これは必見です!:

developer.mozilla.org/en/Setting_up_extension_development_environment

developer.mozilla.org/en/Extension_Frequently_Asked_Questions

developer.mozilla.org/en/Creating_toolbar_buttons

developer.mozilla.org/en/XUL_School/Adding_Toolbars_and_Toolbar_Buttons

developer.mozilla.org/en/XUL_School/Adding_Events_and_Commands

developer.mozilla.org/en/Addons/Add-on_Manager/Code_Samples

developer.mozilla.org/en/chrome_registration

developer.mozilla.org/en/XPCOM_Interface_Reference/mozIJSSubScriptLoader



そして、いつの日か、おそらく覚えておいてください...:

developer.mozilla.org/en/Code_snippets

developer.mozilla.org/en/XUL_School/Handling_Preferences

developer.mozilla.org/en/Security_best_practices_in_extensions



All Articles