рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдореБрдЭреЗ рдЕрдкрдиреЗ рд▓рд┐рдП рдУрдкреЗрд░рд╛ рдХрд╛ рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░ рдкреВрд░рд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдХрд░рддрд╛ред рдореИрдВ рдХреЛрдб рдЦреЛрд▓рддрд╛ рд╣реВрдВ, рдЖрддрдВрдХ! рдиреЗрдорд╕реНрдкреЗрд╕ (window.opera.extension.tabs, window.opera.contexts.toolbar, window.opera.extension.broadcastMessage) рдХреА рдЕрдЬреАрдм рд╢реНрд░реГрдВрдЦрд▓рд╛рдУрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдЬреЛ рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ рдХреНрдпрд╛ рдкрд┐рдШрд▓ рд░рд╣реЗ рд╣реИрдВ (рдореБрдЭреЗ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХреЗ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рдереА)ред рдореБрдЭреЗ рдЖрдЧреЗ рдХреЗ рдЕрдзреНрдпрдпрди рдХреЗ рд▓рд┐рдП dev.opera.com рдЦреЛрд▓рдирд╛ рдкрдбрд╝рд╛ред рдореИрдВрдиреЗ рдЕрднреА рднреА рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕рдорд╛рдкреНрдд рдХрд░ рджрд┐рдпрд╛ рд╣реИ рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдПрдХ рдлреНрд░реЗрдорд╡рд░реНрдХ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдУрдкреЗрд░рд╛ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдХрд░рддрд╛ рд╣реИред
рдЙрд╕ рдХреЛрдб (index.html) рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдЬрд┐рд╕реЗ рдЖрдкрдХреЛ Bexf рдХреЗ рд╕рд╛рдордиреЗ рд▓рд┐рдЦрдирд╛ рд╣реИ:
window.addEventListener('load', function () { // var button = opera.contexts.toolbar.createItem({ disabled: false, title: "Bexf Button Example", icon: "icon.png", popup: { href: "popup_1.html" }, badge: {} }); // button.popup.href = "popup.html"; button.popup.width = 400; button.popup.height = 150; // button.title = 'Bexf Button Example\nTitle Updated via attr' + widget.preferences.getItem('some_option'); // "" button.addEventListener('click', function () { // var tab = opera.extension.tabs.create({url: 'https://www.google.com/', focused: true}); // button.badge.textContent = ~~(Math.random() * 10); // // tab.close(); }, false); // " " button.addEventListener('remove', function () { // opera.extension.tabs.create({url: 'http://www.ya.ru/', focused: true}); }, false); // opera.contexts.toolbar.addItem(button); window.setTimeout(function () { // 10 opera.contexts.toolbar.removeItem(button); }, 10000); }, false);
рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд▓рдЧрддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рд╣рдЯрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЕрдЬреАрдм рдирд╛рдорд╕реНрдерд╛рди, рдЧреБрдгреЛрдВ рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ:
- window.opera.extension.tabs
- window.opera.contexts.toolbar
- button.popup.href
- button.badge.textContent
- window.widget.preferences.setItem | .getItem |
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рдмреЛрддрд▓ рдХреЗ рдмрд┐рдирд╛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдмреЗрдХреНрд╕рдлрд╝ рдмрдЪрд╛рд╡ рдореЗрдВ рдЖрддрд╛ рд╣реИред
Bexf рдХреЗ рдмрд╛рдж рд╕рдорд╛рди рдХреЛрдб (index.html) рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
$.ready(function () { // var button = $.createButton({ disabled: false, title: "Bexf Button Example", icon: "icon.png", popup: { href: "popup_1.html" } }) // .attr({ href: "popup.html", width: 400, height: 150 }) // .attr('title', 'Bexf Button Example\nTitle Updated via attr' + $.opt('some_option')) // "" .click(function () { // var tab = $.createTab({url: 'https://www.google.com/', focused: true}); // button.text(~~(Math.random() * 10)); // // tab.close(); }) // " " .remove(function () { // $.createTab({url: 'http://www.ya.ru/', focused: true}); }) // .addToPanel(); window.setTimeout(function () { // 10 button.removeFromPanel(); }, 10000); });
рдХрд╛рдлреА рдЕрд▓рдЧ рдорд╛рдорд▓рд╛ рд╣реИ, рд╣реИ рдирд╛?
рд╣рдо рдирд╛рдорд╕реНрдерд╛рдиреЛрдВ рдХреЗ рдПрдХ рдЭреБрдВрдб рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛ рд▓реЗрддреЗ рд╣реИрдВ рдФрд░ рдорд╛рдирд╡-рдкрдардиреАрдп рд░реВрдк рдореЗрдВ рд╕рдм рдХреБрдЫ рд▓рд╛рддреЗ рд╣реИрдВ рдЬреЛ рд╕рднреА jQuery рдбреЗрд╡рд▓рдкрд░реНрд╕ (рдЪреЗрди, рд╡рд┐рдзрд┐ рдХреЗ рдирд╛рдо, рдШрдЯрдирд╛рдУрдВ рдФрд░ рд╕рд╣рд╛рдпрдХреЛрдВ, рд╕реЗрдЯрд░ рдЧреЗрдЯрд░реНрд╕) рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИред рд╣рдореЗрдВ рд╕рд░рд▓ рдФрд░ рд╕реНрдкрд╖реНрдЯ рддрд░реАрдХреЗ рдФрд░ рдХрдХреНрд╖рд╛рдПрдВ рдорд┐рд▓рддреА рд╣реИрдВ:
- рдмрдЯрди
- рдЯреИрдм
- рдЦрд┐рдбрд╝рдХреА
- .attr ()
- .bind ()
- $ .createButton ()
- Button.addToPanel ()
- .click ()
- .remove ()
- $ .ajax ()
- $ .opt ()
рдлрд╛рдЗрд▓реЗрдВ рдФрд░ рд▓рд┐рдВрдХ
рдпрд╣ рдкрд░рд┐рдпреЛрдЬрдирд╛ Google code.google.com/p/browser-extensions-framework рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИ
рдЯрд┐рдкреНрдкрдгреА рдлреНрд░реЗрдорд╡рд░реНрдХ рдлреНрд░реЗрдорд╡рд░реНрдХ (16.2 Kb) рдмреНрд░рд╛рдЙрдЬрд╝рд░- рдХрд╕реНрдЯрдорд╛рдЗрдЬрд╝реЗрд╢рди- framework.googlecode.com/files/Bexf-1.0.js
рдХрдо рд╕реЗ рдХрдо рдХреЛрдб (4.9 Kb) рдмреНрд░рд╛рдЙрдЬрд░- рдХрд╕реНрдЯрдорд░реНрд╕-framework.googlecode.com/files/Bexf-1.0.n.s
Bexf рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрджрд╛рд╣рд░рдг (рдЕрд╡рдзрд╛рд░рдгрд╛ рдХрд╛ рдкреНрд░рдорд╛рдг): рдмреНрд░рд╛рдЙрдЬрд╝рд░- рдХрд╕реНрдЯрдорд╛рдЗрдЬрд╝реЗрд╢рди-framework.googlecode.com/files/bexf-example.oex
рддреБрд░рдВрдд рдореИрдВ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЗ рдирд┐рд╣рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛: рдпрд╣ рдкреИрдирд▓ рдкрд░ рдПрдХ рдмрдЯрди рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЯрд╛рдЗрдорд░ рдХреЗ рд░реВрдк рдореЗрдВ рдмрдЯрди рдмреИрдЬ рдХрд╛ рдореВрд▓реНрдп рдмрджрд▓рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рд╣реА рдорд╛рди 0 рдкрд░ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ рдпрд╣ рдмрдЯрди рдХреЛ рд╣рдЯрд╛рддрд╛ рд╣реИ, 5 рд╕реЗрдХрдВрдб рдХреЗ рдмрд╛рдж google.com рд╕реЗ рдЯреИрдм рдЦреЛрд▓рддрд╛ рд╣реИ, рдЗрд╕ рдЯреИрдм рдХреЛ рдмрдВрдж рдХрд░рддрд╛ рд╣реИ рдФрд░ ya.ru рд╕реЗ рдПрдХ рдирдпрд╛ рдЦреЛрд▓рддрд╛ рд╣реИ
PS рдкрд░реАрдХреНрд╖рдг рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ "рд▓рд╛рдЗрд╡" рд╣рдмрд░рд╛ рдореАрдЯрд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЙрд╕ рдирд╛рдо рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдЬреЛ рдпрд╣ рдХрд░рддрд╛ рд╣реИ)ред рдЗрд╕реЗ рдЕрднреА рддрдХ рдореЙрдбрд░реЗрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рдмреАрдПрдХреНрд╕рдПрдл рдореЗрдВ рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИ рдпрд╛ рдУрдкреЗрд░рд╛ рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд▓рд┐рдЦрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реИ, рддреЛ рдореИрдВ рд╕реНрдХреНрд░реИрдЪ рд╕реЗ рд╣реИрдмреНрд░рд╛ рдореАрдЯрд░ рдмрдирд╛рдиреЗ рдФрд░ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд▓реЗрдЦ рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реВрдВ (рдХреНрдпрд╛ рд╣реИ: рд╕реБрдВрджрд░ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░, рдмреАрдПрдХреНрд╕рдПрдл, рдХреИрдирд╡рд╛рд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбрд╛рдпрдирд╛рдорд┐рдХ рдмрдЯрди рдЖрдЗрдХрди)ред