рдирдорд╕реНрддреЗ!
рдореЛрдЬрд╝рд┐рд▓рд╛ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдХреЗ рд▓рд┐рдП рд▓реЗрдЦрди рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╡рд┐рд╖рдп рдкрд░ рд╣реИрдмрд░ рдкрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд▓реЗрдЦ рд╣реИрдВред
рдЦреЛрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
рдпрд╣рд╛рдБ ,
рдпрд╣рд╛рдБ ,
рдпрд╣рд╛рдБ рдпрд╛
рдпрд╣рд╛рдБ ред
рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрднреА рддрдХ рд╡реИрдз рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ (рдпрджрд┐ рдХреЛрдИ рд╣реИ, рддреЛ - рдХреНрд╖рдорд╛ рдХрд░реЗрдВ) рд▓реЗрдЦ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИред
рдЙрд╕реА рд╕рдордп, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдПрдХ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдореЗрдВ рд╣реИ:
рдпрд╣рд╛рдВ рдкреГрд╖реНрда рдХреЗ рдирд┐рдЪрд▓реЗ рднрд╛рдЧ рдореЗрдВ, рдЖрдкрдХреЛ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓реЙрдЧрд┐рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ред
рдореИрдВ рдЖрдкрдХреА рдЕрдиреБрдорддрд┐ рд╕реЗ рдЙрдкрд░реЛрдХреНрдд рд▓реЗрдЦреЛрдВ рдореЗрдВ рджреА рдЧрдИ рдЬрд╛рдирдХрд╛рд░реА рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдирд╣реАрдВ рдмрдирд╛рдКрдБрдЧрд╛ред
рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдореИрдВ "рд╡реИрдз" рдРрдб-рдСрди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред
рдФрд░ рдореИрдВ рдЖрдкрдХреЛ рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг рдФрд░ рд▓рд┐рдВрдХ рдлреЗрдВрдХ рджреВрдВрдЧрд╛ред
- рдХрднреА рднреА eval () рдХрд╛ рдЙрдкрдпреЛрдЧ рди рдХрд░реЗрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЗрд╕ рдирд┐рдпрдо рдХреЛ рд╣рд░ рдХреЛрдИ рдЬрд╛рдирддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдБ рдпрд╣ рдФрд░ рднреА рднрдпрд╛рд╡рд╣ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреЛ рд▓рдЧрд╛рддрд╛рд░ рдпрд╛рдж рд╣реИ рдХрд┐ eval () рдПрдХ рдмрдВрдж рд╣реИред
рд╡рд╣ рд╕рдм рдХреБрдЫ рдЬреЛ рдЗрд╕рдХреЗ "рд╕реНрдХреЛрдк" рдореЗрдВ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рд╕реНрдХреЛрдк) рдЙрд╕ рдХреЛрдб рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдЗрд╡рд▓ () рдореЗрдВ рдирд┐рд╣рд┐рдд рдерд╛ред рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдирд╛ рдХрдИ рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рднрд░рд╛ рд╣реИред рдЦрд╛рд╕рдХрд░ рдпрджрд┐ рдЖрдк рд╕рд╣рд╛рдпрдХ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдЬреИрд╕реЗ "i", "str" тАЛтАЛрдФрд░ рдЗрд╕реА рддрд░рд╣ рдХреЗ рдирд╛рдо рджреЗрдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВред
- Window.setTimeout () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд╣рдореЗрд╢рд╛ рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦреЗрдВ:
window.setTimeout( function (){<br> [ ]<br> }, ); <br><br> * This source code was highlighted with Source Code Highlighter .
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рд╡реИрдз рд╣реИ, рдФрд░ рджреВрд╕рд░реА рдмрд╛рдд, рдпрд╣ рд╡реИрдз рд╣реИ, рдФрд░ рддреАрд╕рд░реА рднреАред
рдпрджрд┐ рдЖрдкрдХреЛ рдЪрд░ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддреЛ рдХреНрдпрд╛ рдХрд░реЗрдВ?
рд╕реНрдХреЛрдк рд▓реЙрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ!
( function ( [ , Timeout ] ){
window.setTimeout( function (){
[ ]
}, );
}( [ , "" Timeout ] ));
* This source code was highlighted with Source Code Highlighter .
рдмреЗрд╢рдХ, рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ "рд╕рд╣реА" рд╡рд┐рдХрд▓реНрдк рд╣реИ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП:
Components.classes[ '@mozilla.org/timer;1' ].createInstance(Components.interfaces.nsITimer); <br><br> * This source code was highlighted with Source Code Highlighter .
рд▓реЗрдХрд┐рди рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА "рдкреВрд░реА рддрд░рд╣ рд╕реЗ" рд╕рд╣реА рд╣реИред
- рдХрднреА рдУрд╡рд░рд▓реЗ рдХреЗ рд▓рд┐рдП рддреЛ рдХрднреА рдЧреНрд▓реЛрдмрд▓ рд╕реНрдХреЙрд░реНрдкрд┐рдпреЛ рдореЗрдВред
рд╡рд╣ рдпрд╣ рд╣реИ:
< toolbarbutton id ="helloButton" label ="&helloworld;" oncommand ="showHello();" /> <br><br> * This source code was highlighted with Source Code Highlighter .
рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рд┐рдПред
рдпрд╣рд╛рдБ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реИ?
рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреЛрдИ рд╡реИрд╢реНрд╡рд┐рдХ рдлрд╝рдВрдХреНрд╢рди "showHello ()" рд╣реИред
рд╣рд╛рдВ, рд╕рднреА рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ "рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдореЗрдВ" рд╣реИ рдФрд░ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ "рдЙрдкрд▓рдмреНрдз" рдирд╣реАрдВ рд╣реИ
рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рддреНрд╡рдЪрд╛ рдХреЗ рд▓рд┐рдП рдЧреНрд▓реЛрдмрд▓ рдУрд╡рд░рд▓реЗред
рд▓реЗрдХрд┐рди рдпрд╣ рдЙрд╕реЗ рд╢реЗрд╖ рд╡реИрд╢реНрд╡рд┐рдХ рд╕реЗ рдирд╣реАрдВ рд░реЛрдХрддрд╛ рд╣реИ!
рдХрдо рд╕реЗ рдХрдо рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдврд╛рдВрдЪреЗ рдХреЗ рднреАрддрд░ ...
рддреЛ рдЙрд╕рдХрд╛ "рдХреБрдЫ" рдпрд╛ "рдХреЛрдИ" рдЧрд▓рддреА рд╕реЗ "рд╣реЛ рд╕рдХрддрд╛ рд╣реИ" ...
рдХреНрдпрд╛ рдХрд░реЗрдВ?
рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдиреЗ рдЕрднреА рддрдХ " addEventListener " рдХреЛ рд░рджреНрдж рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ
рдпрд╣реА рд╣реИ, рд╣рдо рдЗрд╕ рддрд░рд╣ рдХрд░рддреЗ рд╣реИрдВ:
<toolbarbutton id= "helloButton" label= "&helloworld;" />
var gid = function (id){ return window. document .getElementById(id); }
gid( 'helloButton' ).addEventListener( 'command' , function (evt){ our_event_handler(evt); }, false );
* This source code was highlighted with Source Code Highlighter .
рд╣рд╛рдБ, рдпрд╣ "рд╕реБрдирд╕рд╛рди" рд╣реИ, рд▓реЗрдХрд┐рди рд╕рддреНрдпрд╛рдкрди рдЕрдзрд┐рдХ рдорд╣рдВрдЧрд╛ рд╣реИ!
рдЖрдк рдЕрдкрдиреЗ рд▓рд┐рдП рдЬреАрд╡рди рдХреЛ рдХрдард┐рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
- рдЖрдкрдХреЗ рдПрдХреНрд╕рдпреВрдПрд▓ рдУрд╡рд░рд▓реЗ рдХреЗ рд▓рд┐рдП, рдХреЗрд╡рд▓ рдПрдХ (рдХреЗрд╡рд▓ рдПрдХ рд╣реА рд░рд╣рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреИрд╕рд╛ рдХрд┐ "рд╣рд╛рдИрд▓реИрдВрдбрд░") рдЬреЗрдПрд╕ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдмрдирд╛рдирд╛ рдЙрдЪрд┐рдд рд╣реИ, рдЬреЛ "рдЖрдкрдХреЗ рд╕рднреА рдХреЛрдб" рд╣реЛрдВрдЧреЗред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рдлрд╛рдЗрд▓ рдХрд╛ рдкреВрд░рд╛ рдХреЛрдб рдХреНрд▓реЛрдЬрд░ рдХреЗ рдЕрдВрджрд░ рд╣реЛрдЧрд╛, рдЬреИрд╕реЗ:
( function (){
var e;
try {
[ ]
} catch (e){ window.alert(e); }
})();
* This source code was highlighted with Source Code Highlighter .
- рдХреНрдпрд╛ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдХреЛрдб "рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдУрдВ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдореЗрдВ рдЫреЛрдЯреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛" рдкрд░ "рдмрд┐рдЦрд░рд╛ рд╣реБрдЖ" рд╣реЛ?
рдпрд╣ рднреА рд╕рдВрднрд╡ рд╣реИ!
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 .
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреБрдЫ рдЕрд▓рдЧ "рдкрд░реЗрд╢рд╛рдирд┐рдпрд╛рдБ" рд╣реЛрдВрдЧреАред
- рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдЖрдк рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдПрдХ рдЕрд▓рдЧ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рд▓рд┐рдП рд╕рднреА "рд╣реИрдВрдЧрд┐рдВрдЧ" 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рдореЛрдЬрд╝рд┐рд▓рд╛ рдбреЗрд╡рд▓рдкрд░ рдиреЗрдЯрд╡рд░реНрдХ:
developer.mozilla.org/en-USрд╣рдо рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рджреЗрддреЗ рд╣реИрдВред
XUL рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛:
developer.mozilla.org/en/XULdeveloper.mozilla.org/en/JavaScriptdeveloper.mozilla.org/en/DOMdeveloper.mozilla.org/en/XUL_Overlaysdeveloper.mozilla.org/en/XUL_controlsрдФрд░ рдпрд╣ рджреЗрдЦрдирд╛ рд╣реЛрдЧрд╛!
developer.mozilla.org/en/Setting_up_extension_development_environmentdeveloper.mozilla.org/en/Extension_Frequently_Asked_Questionsdeveloper.mozilla.org/en/Creating_toolbar_buttonsdeveloper.mozilla.org/en/XUL_School/Adding_Toolbars_and_Toolbar_Buttonsdeveloper.mozilla.org/en/XUL_School/Adding_Events_and_Commandsdeveloper.mozilla.org/en/Addons/Add-on_Manager/Code_Samplesdeveloper.mozilla.org/en/chrome_registrationdeveloper.mozilla.org/en/XPCOM_Interface_Reference/mozIJSSubScriptLoaderрдФрд░ рдЗрд╕ рджрд┐рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рд╢рд╛рдпрдж, рдпрд╛рдж рд░рдЦрдирд╛ ...:
developer.mozilla.org/en/Code_snippetsdeveloper.mozilla.org/en/XUL_School/Handling_Preferencesdeveloper.mozilla.org/en/Security_best_practices_in_extensions