Firefoxæ¡å¼µï¼ã¢ããªã³ï¼éçºå ¥é
ãã®éã¢ããªã³ãéçºããã®ã§ãããéçºã«å ¥ãã¾ã§å°ãæéãããã£ã¦é¢åã ã£ãã®ã§ãåãã¦éçºããéã«ããã£ã¨ä½ããããã«ã¾ã¨ãã¾ããã
ç°¡åãªãµã³ãã«ãä½ã£ãå¾ãåèURLã«æãã¦ãããµã¤ãã§è©³ç´°ãªè§£èª¬ãè¦ãã¨çè§£ããããã¨æãã¾ãã(Firefox3.0ã¨3.5ã§åä½ç¢ºèªæ¸ã¿ã§ã)
æºå
éçºãå§ããéã«ãä¸åº¦ã ãè¡ãã°ããè¨å®ã§ãã
éçºç¨ãããã¡ã¤ã«ä½æ
äºæ³å¤ã®ãã©ãã«ã§Firefoxãå©ç¨ã§ããªããªãå¯è½æ§ãããã®ã§ãã¢ããªã³éçºç¨ã®ãããã¡ã¤ã«ã使ãã¦ããã¾ãããããã¡ã¤ã«ããã¼ã¸ã£ã¼ã®èµ·åã¯ä¸è¨ãªãã·ã§ã³ã§ã
Mac /Applications/Firefox.app/Contents/MacOS/firefox -ProfileManager Windows C:\...\Mozilla Firefox> firefox -p
about:configã®è¨å®
URLã«about:configã¨å
¥åããä¸è¨å¤æ°ã®å¤ãtrueã«è¨å®ãã¾ãã
ç¾å¨å¤ãè¨å®ããã¦ããªããã®ã«ã¤ãã¦ã¯å³ã¯ãªãã¯ãæ°è¦ä½æ > çå½å¤ãã§è¿½å ãã¾ãã
javascript.options.showInConsole | JavaScriptã®ã¨ã©ã¼ãã¨ã©ã¼ã³ã³ã½ã¼ã«ã«åºåãã |
javascript.options.strict | JavaScriptã®ã¨ã©ã¼ãå³å¯ã«ãã |
browser.dom.window.dump.enabled | dump颿°ã§æååãåºåå¯è½ã«ãã |
nglayout.debug.disable_xul_cache | XULã®ãã£ãã·ã¥ãç¡å¹ã«ãã |
DOM Inspectorã®ã¤ã³ã¹ãã¼ã«
ãã©ã¦ã¶æ§æè¦ç´ ï¼ã¡ãã¥ã¼ãã¼ã¨ãï¼ã®æ
å ±ãåå¾ããããã«å¿
è¦ã§ãã
https://addons.mozilla.org/ja/firefox/addon/6622
éçº
ããããã¢ããªã³ã®å®è£
ã§ãã
å¿ è¦ãã¡ã¤ã«ã®ä½æ
ä»åã¯ä¸è¨ã®ãã¡ã¤ã«ãæºåãã¾ãã
éçºç¨ã®ä½æ¥ãã£ã¬ã¯ã㪠/Users/ntaku/extensions/hello /Users/ntaku/extensions/hello/install.rdf /Users/ntaku/extensions/hello/chrome.manifest ã¡ã¤ã³ã¹ã¯ãªãããè¨ç½®ãããã£ã¬ã¯ã㪠/Users/ntaku/extensions/hello/content /Users/ntaku/extensions/hello/content/overlay.xul /Users/ntaku/extensions/hello/content/overlay.js
install.rdf
ã¤ã³ã¹ãã¼ã«æ
å ±ãè¨è¿°ããè¨å®ãã¡ã¤ã«ã§ãã
ã¢ããªã³ã®åºæ¬æ
å ±ã対å¿ãããFirefoxã®ãã¼ã¸ã§ã³ãæå®ãã¾ãã
id | ã¢ããªã³ãèå¥ããããã®ID |
name | åç§° |
version | ãã¼ã¸ã§ã³ |
description | 説æ |
creator | éçºè |
targetApplication | 対å¿ãããã¢ããªã±ã¼ã·ã§ã³ã®æ å ± |
<?xml version="1.0"?> <RDF:RDF xmlns:RDF="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:em="http://www.mozilla.org/2004/em-rdf#"> <RDF:Description RDF:about="urn:mozilla:install-manifest"> <em:id>[email protected]</em:id> <em:name>hello</em:name> <em:version>0.1</em:version> <em:description>ãµã³ãã«ã¢ããªã±ã¼ã·ã§ã³</em:description> <em:creator>ntaku</em:creator> <em:targetApplication> <RDF:Description em:id="{ec8030f7-c20a-464f-9b0e-13a3a9e97384}" em:minVersion="3.0" em:maxVersion="3.5.*" /> </em:targetApplication> </RDF:Description> </RDF:RDF>
chrome.manifest
ã¢ããªã³ã®ããã±ã¼ã¸æ
å ±ãè¨è¿°ããè¨å®ãã¡ã¤ã«ã§ãã
ã¢ããªã³ã§å©ç¨ãããã£ã¬ã¯ããªãç»é²ãã¾ãã
content hello content/ overlay chrome://browser/content/browser.xul chrome://hello/content/overlay.xul
overlay.xul
GUIãå®ç¾©ããXULï¼ãºã¼ã«ï¼ãã¡ã¤ã«ã§ãã
ããã§å®ç¾©ããGUIãFirefoxã®ãã©ã¦ã¶ã¦ã£ã³ãã¦ã¸ãªã¼ãã¼ã¬ã¤ããã¾ãã
<?xml version="1.0"?> <overlay xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> <script type="application/x-javascript" src="chrome://hello/content/overlay.js" /> <popup id="contentAreaContextMenu"> <menuitem id="hello-menu" label="Hello" oncommand="Hello.init();" /> </popup> </overlay>
ããã§ã¯ã³ã³ããã¹ãã¡ãã¥ã¼ã®IDãæå®ãã¦ããã®å ´æã«æ°è¦ã¢ã¤ãã ã追å ãã¦ãã¾ããDOM Inspectorãéãã¦URLã«chrome://browser/content/browser.xulã¨å
¥åãã¦ã¿ã¦ãã ãããFirebugã®ãããªæè¦ã§ãã©ã¦ã¶æ§æè¦ç´ ã®IDã調æ»ã§ãã¾ãã
overlay.js
å
·ä½çãªå¦çãè¨è¿°ãã¾ãã
xulã®ä¸ã«ãJSãè¨è¿°ã§ãã¾ããããã¾ã好ã¾ãããªãã®ã§åé¢ãã¾ãã
var Hello = { init: function(){ var doc = window.content.document; var p = doc.getElementById("hello-popup"); if(!p){ var popup = doc.createElement("div"); popup.setAttribute("id", "hello-popup"); doc.body.appendChild(popup); p = doc.getElementById("hello-popup"); } var s = p.style; s.position = "absolute"; s.top = 0; s.left = 0; s.width = "100%"; s.background = "#fff398"; p.innerHTML = "<div>HELLO</div>"; } };
ç»é¢ã®ä¸é¨ã«HELLOã¨è¡¨ç¤ºããã ãã®ã¹ã¯ãªããã§ããä»åã¯ç¹ã«æ°ã«ãã¦ãã¾ããããã¢ããªã³å
ã§æå®ããIDã¯ä»ã®ã¢ããªã³ã¨è¢«ããªãããã«å·¥å¤«ããæ¹ãããã§ãã
ãããã°ç¨ã¤ã³ã¹ãã¼ã«
ä¸è¨ãã¡ã¤ã«ãå ¨ã¦æºåã§ãããããããã°ç¨ã«ã¤ã³ã¹ãã¼ã«ãã¦ã¿ã¾ãã
ã½ã¼ã¹ãã¡ã¤ã«ããã¤ã³ã¹ãã¼ã«ããã«ã¯ã使¥ãã£ã¬ã¯ããªã®ãã¹ãè¨è¿°ãããã¡ã¤ã«ãextensionsãã£ã¬ã¯ããªã«è¨ç½®ããã ãã§OKã§ãã
ãã¡ã¤ã«åã¯install.rdfã§æå®ããã¢ããªã±ã¼ã·ã§ã³ID([email protected])ã§ãã
/Users/ntaku/extensions/hello
extensionsãã£ã¬ã¯ããª
Mac ~/Library/Application Support/Firefox/Profiles/xxx/extentions/ Windows C:\Documents and Settings\user\Application Data\Mozilla\Firefox\Profiles\xxx\extensions
ãã®ç¶æ
ã§Firefoxãåèµ·åããã¨ã¢ããªã³ãã¤ã³ã¹ãã¼ã«ããã¾ãã
ã¤ã³ã¹ãã¼ã«å¾ã«å¦çãä¿®æ£ããå ´åã¯ãFirefoxãåèµ·åããããæ°è¦ã¦ã£ã³ãã¦ãéãã°é©å¿ããã¾ãã
ã¤ã³ã¹ãã¼ã©ã¼ä½æ
éçºãçµäºããããã¡ã¤ã«ãxpiå½¢å¼ã§ã¾ã¨ãã¦é
å¸ã§ããããã«ãã¾ãã
ãã¡ã¤ã«æ§æãå°ãå¤ãã£ã¦ãä¸è¨ã®ããã«ã¾ã¨ããå¿
è¦ãããã¾ãã
/Users/ntaku/extensions/hello /Users/ntaku/extensions/hello/chrome.manifest /Users/ntaku/extensions/hello/install.rdf /Users/ntaku/extensions/hello/chrome â 夿´ /Users/ntaku/extensions/hello/chrome/hello.jar â 夿´
hello.jarã«ã¯contentãã£ã¬ã¯ããªãå«ã¾ãã¦ãã¾ãã
æ§æãå¤ãã£ãã®ã§ãchrome.manifestãå°ã夿´ãã¾ãã
content hello jar:chrome/hello.jar!/content/ â 夿´ overlay chrome://browser/content/browser.xul chrome://hello/content/overlay.xul
æå¾ã«å
¨ã¦ã®ãã¡ã¤ã«ãzipã§åºãã¦æ¡å¼µåãxpiã«å¤æ´ããã°ã¤ã³ã¹ãã¼ã©ã¼ã®å®æã§ãã
xpiãã¡ã¤ã«ãFirefoxã«D&Dããã°ã¤ã³ã¹ãã¼ã«ã§ãã¾ãã
xpiçæã¹ã¯ãªãã
ä¸è¨ã®ãããªã¹ã¯ãªããã§ä¸è¨ä½æ¥ãèªååã§ãã¾ã
#!/bin/bash cd /Users/ntaku/extensions cp -r hello hello-xpi sed 's/hello content\//hello jar:chrome\/hello.jar!\/content\//' hello/chrome.manifest > hello-xpi/chrome.manifest cd hello-xpi mkdir chrome zip -r chrome/hello.jar content rm -rf content zip -r hello.xpi chrome install.rdf chrome.manifest mv hello.xpi ~/Desktop cd .. rm -rf hello-xpi
åè
ãã詳ããç¥ãããæ¹ã¯ç¶ãã¦ä¸è¨ãµã¤ããã©ããã