Extension udvikling i Mozilla Firefox. Henrik Gemal

Relaterede dokumenter
Mozilla. Open source Web browser Mail klient Organisation Fremtiden... Henrik Gemal Mozilla Evangelist - gemal.dk/mozilla

OrCAD Capture TCL IDE med Eclipse

Inden du går i gang. For Mozilla Firefox brugere. For Internet Explorer brugere

PHP Quick Teknisk Ordbog

Sådan kommer du nemt i gang med Joomla!

Kenn Römer-Bruhn. WordPress. - gør dig synlig på nettet

Mozilla. Open source Web browser Mail klient Organisation Fremtiden... Henrik Gemal Mozilla Evangelist - gemal.dk/mozilla

Sådan logger du ind... 2 Hvilke mapper kan du tilgå... 3 Visning af eksempel af en fil... 5 Sådan deler du en fil... 7 Se hvad du deler med andre...

DRFLive - dynamisk visning af resultater fra DRF Stævnesystem

Manual for installering og brug af IE-spyad af Anette B. Overgaard

OK Fonden. Umbraco CMS Quickguide

Dokumentering af umbraco artikeleksport:

OS2faktor. AD FS Connector Vejledning. Version: Date: Author: BSG

Guide til opdatering af Parrot CK3100 LCD, 3200LS Color, 3200LS+ og MK6100 med en Parrot Dongle

Upload af billeder til hjemmesiden m.m.

Umbraco installationsvejledning

Dokumentation. Karen-Louise Fejerskov

Portfolio Andreas Stjerneklar Kristensen. Multimedia Designer Eksamen 1. Semester

Navision Stat (NS 9.2)

Affaldsdatasystem Vejledning supplement i system-til-system integration for.net brugere

Mozilla Firefox (tidligere Firebird): Fremhæve ord

Hjælp under login på Mit DLR Oktober 2015

Dagens program. Domæner. change log- screen shots hver gang I har arbejdet med themet. Arkitekturen bag en wp blog. Hvad er widgets.

Byg web sider. Introduktion:

portfolio GRAFISK WORKFLOW

Gem dine dokumenter i BON s Content Management System (CMS)

Form og dens underlige box model

Lav en hjemme side der kan sælge fly billetter til en stor i Europa.

Vejledning. Indhold. Side 1

xgalleri Mulige filtyper Installation web-version

BOULEVARDEN 19E 7100 VEJLE LERSØ PARKALLE KØBENHAVN Ø TLF Webservices Installationsvejledning

Applikations Virtualisering. Anders Keis Hansen

Serversideprogrammering, CMS og eshop. Dag 1: Introduktion og serverside programmering Niels Østergaard

Indhold... 2 Installation af bannermodulet... 3 Opsætning af bannermodul... 5 Opsætning af bannere... 7 Indsætning af bannermodul på side...

GRAFISK WORKFLOW. 1 Grafisk workflow

09/ Version 1.4 Side 1 af 37

PORTFOLIO SEBASTIAN NYHOLM. Eksamensprojekt. 1. Semester

vejman.dk WMS/WFS dokumentation vmgeoserver.vd.dk Maj 2013 Udgave 2.0

NodeJS med Bootstrap. Kapitel 1

JSP, Tomcat. Tutorial lavet af Jákup W. Hansen TSU semester 10.october 2007

Installationsvejledning til Aktiv Virk-top

Opsætning af klient til Hosted CRM

Tlf Fax

SSSystems.local. Netværk. Sikkerhed. Webserver

Indhold VDI... 1 Installer fra UCL programmer... 2 Installer fra web... 7 Kør fra browser... 16

HVAD ER WORDPRESS 2 HVORDAN LOGGES IND 3 HVORDAN NAVIGERES DER 4 HVORDAN SKRIVES EN SIMPEL NYHED 5 AVANCEREDE NYHEDER 6 HVORDAN RETTES EN NYHED 7

Ide med Diff. Mål. Tidsplan. 1.uge: 2.uge:

Internet Information Services (IIS)

Compass GPS installation

IT projekt uge 4 9. Marie Vinter, Roskilde Tekniske Gymnasium, klasse 2.6 IT, bw, uge

Guide til, hvordan du tilføjer en GIPPLER- fane til din Facebook side

Hvordan kan man slå blokeringen af pop op-vinduer fra?

Programmering I Java/C#

Indholdsfortegnelse. Hvorfor skal jeg tage backup af min blog? Side 3. Tag backup med UpDraft Side 4. Tag manuelt backup Side

har jeg hentet nedenstående anmeldelse af et godt program til

Ruko SmartAir. Updater installation

MANUAL. Præsentation af Temperaturloggerdata. Version 2.0

Coolselector Installationsguide

Janich dk. Joomla Case sol.dk. Janich Rasmussen. Freelance Joomla! Professional. Joomladay Danmark 2011

Vejledning, teknik, tips and tricks

Arkitektur for begyndere

Manual for installering og brug af IE Privacy Keeper version 2.7 af Anette B. Overgaard Maj 2005

Contents. John Have Jensen Mercantec 2011

Nye features i Notes 9.0 Social Edition:

Installation af web-konfigurationsprogrammer

Webside score khtsb.com

Hvorfor skal vi bruge objekt orienteret databaser?

Lav din egen forside i webtrees

Installation af Diigo... 3

Password-beskyttelse af visse filer

Installationsvejledning til SOLIDWORKS 2017

Tredjepart webservices

Sektornet VPN. Opsætning af Novell 5.1 server og klient på. Windows 2000/NT/XP

Portfolie Redesign. Forord. Det tekniske. Tema ide. Css. opløsning.

Håndbog Til CPR services. Bilag 10 Opsætning af CPR klienten til understøttelse af forskellige installationstyper

Trådløst netværk med private enheder for ansatte og studerende

Installation af WeroShop 2.4 S

Hvordan laver jeg mit eget kort på ArcGIS Online?

MSI pakke til distribution af AutoPilot komponenter.

Vedr. Google Drive File Stream

Mobile apps. App Academy. Velkommen! Vi starter kl. 17:00. Eksempler og links kan findes på

Når du holder møder i Connect

Open Data. Geo Fyns Dataportal

Byggebasen Javascript

Opdatering af ISOWARE til version 6.1.0

Installationsvejledning

Hvad Hvorfor Hvordan Overvåg sites via egne feeds

1.1 Client. PDF created with pdffactory Pro trial version System. 1 Use Cases. RemoveSpyware. ViewProcesses.

ASB signatur. Figur a: eksempel. og hent filen asb_signatur.zip.

Mindstekrav til udstyr (fase 1) Løsningsbeskrivelse

Installation af Web-konfigurationsprogrammer

Workflow REDEGØRELSE WORKFLOW OPGAVE WHO WOULD YOU SMACK FOR A NEW RECORD?

TEKNISKE FORHOLD VEDR. ADGANG TIL VP.ONLINE. Brugervejledning

Installationsvejledning til SOLIDWORKS 2018

PID2000 Archive Service

Vejledning til brug af Y s Men s klubintranet administrator guide

Guide til Umbraco CMS

Formatering af tekst, JCE Editor, Joomla

Civilstyrelsen. Lex Dania editor Installationsvejledning. Version:

Installations guide Saxo ERPTrader. Microsoft Dynamics NAV 2009 / 2013 / 2013R2

Transkript:

Extension udvikling i Mozilla Firefox Henrik Gemal Side 1

Hvem er jeg? Web udvikler hos TDC Laver TDC.dk og TDCOnline.dk Laver HTML, CSS, PHP Med i Mozilla projektet i mange år Udviklet et par extensions bl.a. Linky, Launchy, Slashy og en internt til TDC og deres CMS system Side 2

Hvad kommer jeg til at kunne? Lære hvad en extension er Lære lidt om hvor let det egentligt er at lave en extension Lave din egen extension Finde ud af hvordan du kommer videre Eller måske bare blive endnu mere forvirret Side 3

Hvad er extensions? Udvidelser til Mozilla Firefox Tilføjer eller modificere funktioner Skrevet i JavaScript og XML Bliver installeret via en såkaldt XPI fil, som faktisk bare er en zip fil Side 4

Hvad er extensions skrevet i? JavaScript Mozilla API Egne komponenter i enten C++ eller JavaScript XUL XML / HTML / CSS / PNG ANT til bygning af XPI Cross OS Side 5

Fremgangsmåden 1.Ændre i XUL eller JavaScript filerne 2.Luk Mozilla Firefox 3.Kør ant install 4.Genstart Mozilla Firefox 5.Test og kig i JavaScript consolen 6.Gentag 1 7.Når du er tilfreds kør ant dist 8.Distribuer XPI filen Side 6

Er blot en zip fil XPI filen XPI filen indeholder som regel følgende filer: install.rdf install.js chrome.manifest chrome/extensionnavn.jar defaults/preferences/extensionnavn.js Side 7

extensionnavn.jar content contents.rdf main.xul main.js locale en-us/contents.rdf en-us/main.dtd en-us/main.properties skin classic/contents.rdf classic/main.css Side 8

Mozilla Firefox 1.0 vs 1.1 contents.rdf filer behøves ikke længere. Afløses af chrome.manifest Meget nemmere at lave indstillinger Muligt at loade overlays dynamisk Overlayinfo er fjernet helt Afinstallere en extension ved at fjerne folderen Side 9

Sådan kommer du i gang - 1 Opsæt ANT udviklingsmiljø Ant http://ant.apache.org/ Ant-Contrib http://ant-contrib.sourceforge.net/ FMPP http://fmpp.sourceforge.net/ Fileinfo http://www.f4.fhtw-berlin.de/people/s0507007/fileinfo.html Test ANT ved at skrive ANT -version Side 10

Sådan kommer du i gang - 2 Hent og unzip mit extension udviklingsmiljø mozilla/extensiondevelopment.html Udfør ant Hurra! Du har nu en simple extension parat til installation Tilret build.properties Udfør ant Hurra! Du har nu din egen extension parat til installation Tilret filer under content, defaults, locale, og skin Udfør ant Hurra! Du har nu din helt egen extension parat til installation Side 11

Opskriften Find en lignende extension og tilret Den bedste og nemmeste måde at lære på Steal the best code the rest Hvorfor lave noget som andre allerede har lavet? Det sværeste få en god ide You dont need eyes to see, you need vision Hvis det kan spare tid bruger folk det Side 12

Overlays Overlays er en metode til at kombinere flere vinduer til ét Extensions er overlays til et allerede eksisterende XUL vindue, f.eks. browser vinduet Overlays er XUL filer Overlays kan indeholder referencer til eksterne filer med JavaScript, CSS og tekster Overlays til kan tilføje menu'er eller knapper Side 13

<?xml version="1.0"?> main.xul <!DOCTYPE overlay SYSTEM "chrome://${project}/locale/main.dtd"> <overlay xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" id="${project}- overlay"> <script type="application/x-javascript" src="main.js"/> <!-- Context area for Mozilla, Mozilla Firefox, Mozilla Thunderbird --> <popup id="contentareacontextmenu"> <menu label="&test.label;" tooltiptext="&test.tooltip;" insertbefore="context-sep-properties" id="${project}-context"> <menupopup> <menuitem id="${project}-context-browser" oncommand="test.docontext(this);" label="&test.label;" tooltiptext="&test.tooltip;" /> </menupopup> </menu> <menuitem id="${project}-context-browser" oncommand="test.docontext(this);" label="&test.label;" tooltiptext="&test.tooltip;" /> </popup> <!-- Toolbar for Mozilla Firefox --> <toolbarpalette id="browsertoolbarpalette"> <toolbarbutton id="${project}-toolbar-browser" class="toolbarbutton-1 chromeclass-toolbar-additional" label="&test.label;" tooltiptext="&test.tooltip;" oncommand="test.dotoolbar(this);" /> </toolbarpalette> </overlay> Side 14

var test = { onload: function() { this.initialized = true; }, main.js - Simpel dotoolbar: function() { if (this.initialized) alert("hi from toolbar!"); }, docontext: function() { if (this.initialized) alert("hi from context!"); } }; window.addeventlistener("load", function(e) { test.onload(e); }, false); Side 15

Mozilla API API til næsten alt Se IDL filer på lxr.mozilla.org IO, XML, HTTP, Cache, DOM Hvad er URL'en da brugeren højre klikkede? Hvor på siden højre klikkede brugeren? Hvad højre klikkede brugeren på? Side 16

var test = { onload: function() { this.initialized = true; }, main.js Brug af URL dotoolbar: function() { if (this.initialized) alert("hi from toolbar!"); }, docontext: function(e) { var re=/^wiki.sslug.dk$/i; if (gbrowser.currenturi.host.match(re)) gbrowser.addtab(gbrowser.currenturi.spec + "?action=history"); } }; window.addeventlistener("load", function(e) { test.onload(e); }, false); Side 17

Debug er svært Debug Kig altid i JavaScript konsol'en Slå debug information til i about:config javascript.options.showinconsole sættes til true javascript.options.strict sættes til true test.prototype.trace = function(t) { var CONSOLE_SERVICE = Components.classes['@mozilla.org/consoleservice;1'].getService(Components.interfaces.nsIConsoleService); try { CONSOLE_SERVICE.logStringMessage("Launchy: " + t); } catch(ex) { } } Side 18

Indstillinger Bliver MEGET nemmere i Firefox 1.1 I dag kombination af XUL og JavaScript I Firefox 1.1 rent XUL (for det meste) Side 19

main.js Brug af gcontextmenu var test = { onload: function() { this.initialized = true; }, dotoolbar: function() { if (this.initialized) alert("hi from toolbar!"); }, docontext: function(e) { if (gcontextmenu.onimage) alert("du klikke pa et image") if (gcontextmenu.onlink) alert("du klikke pa et link") } }; window.addeventlistener("load", function(e) { test.onload(e); }, false); Side 20

Problemer Høj indlærningskurve Til dels afhjulpet af mit extensions kit Manglende dokumentation Namespace Forskel mellem Gecko klienter Brug af gamle API'er Kræver genstart hver gang Side 21

main.js - Brug af gcontextmenu var test = { docontext: function(e) { var n = gcontextmenu.target; if (n) for (var i = 0; i < 5; i++) if (n.nodename.tolowercase() == "div" && n.id == "bodycontent") { alert("bodycontent") break; } else { n = n.parentnode; if (!n) break; } } }; window.addeventlistener("load", function(e) { test.onload(e); }, false); Side 22

XULRunner Simpel pakke som gør det muligt at afvikle XUL applikationer XULRunner + jar fil = applikation Kunne distribueres via setup program XULRunner kan bruge netværk, DOM, XML, Extensions, XUL, kryptografi, XSLT, Gecko Kunne bruges til administration, kiosk applikationer Side 23

main.js Brug af source var test = { docontext: function(e) { var re=/<!-- Served by (.*?) in (.*?) secs\. -->/; var b = document.commanddispatcher.focusedwindow.document.documentelement.innerhtml; var ex = re.exec(b); if (ex) alert("det var jo " + ex[1] + " der lavede siden pa " + ex[2] + " sekunder"); } }; window.addeventlistener("load", function(e) { test.onload(e); }, false); Side 24

Hvad ellers? JsLib API til dagligdags ting Debug, IO, netværk, ZIP MozDev.org cvs samt XPI distribution http://update.mozilla.org/ til XPI distribution Side 25

Hvordan kommer jeg videre? Extensions Forum at MozillaZine http://forums.mozillazine.org/viewforum.php?f=19 Mozilla Source Code Search http://lxr.mozilla.org/mozilla/ Extensions Mirror http://www.extensionsmirror.nl/ BlogUpdates - What's happening in the Mozilla community mozilla/blogupdates.html http://irc.mozilla.org/ news://news.mozilla.org news://news.mozdev.org http://kb.mozillazine.org/getting_started_with_extension_development http://wiki.mozilla.org/ Side 26