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

Source: https://habr.com/ru/post/J134413/


All Articles