ãã®ãããè°é¡ïŒ FireFoxã®ãã©ã°ã€ã³ãè¿ éãã€ã¯ãªãŒã³ã«äœæããŸãã
ç§ã¯ããã«ããªãã«èŠåãããã§ã ïŒãã©ã°ã€ã³ã®å®éšãGreaseMonkeyã®ã¹ã¯ãªããã§è¡ãããåã¯ãç§ã¯ãã®åé¡ã®ããã§ãã°ã«ã§ããããŸããïŒã³ã¡ã³ããç°¡åã«ç·šéããããã®ã®ãºã¢ã§ããHabraHackerãèŠãŸããïŒã ãã ãããã©ã°ã€ã³ã¯æžãããŠããããã§ãæ©èœããŸã;ïŒ
ç§ãå¿ èŠïŒ
- Firefox ããšãã°ã3çªç®ã®ããŒãžã§ã³ïŒminefieldïŒããããŸãã
- Firefox Portable ãã¡ãããããã¯å¿ èŠã§ã¯ãªããããããŸããããç§ã¯ãããã»ããã¢ããããŸããã2çªç®ã®ããŒãžã§ã³ã«åŸã£ãŠãã©ã°ã€ã³ãç°¡åãã€è¿ éã«å®è¡ããããã§ãã
- ãšãã£ã¿ãŒ ã Notepad ++ãéžæããŸãã åãããšããå§ãããŸã-ããã¯éåžžã«éããç°¡åã§ã䟿å©ã§ãèšå€§ãªæ°ã®æ©èœãåããŠãããäœã§ã匷調ããŠããŸãã æ°ã«å ¥ããªãå Žåã¯ãJavaScriptãšXMLã匷調衚瀺ããããšããå§ãããŸãã
- JavaScriptã®ç¥è ã å¥åŠãªããšã«ãããããå¿ èŠã«ãªããŸãã
- ã¡ãã£ãšãã工倫ãšæ³åå ã çç±ã¯ããããŸããã
å®éãã©ãããå§ããã¹ãããèããããšããå§ããŸããã Googleã§ãã¥ãŒããªã¢ã«ãæ€çŽ¢ãããšãããã«ããã«ãèŠã€ãããŸããããã©ããããããç§ã¯ãããã奜ãã§ã¯ãããŸããã§ãã-ããããåå3æã«ãã®ãããªå察æèŠãèªãæéããªãã§ããããïŒç§ã®ã€ã³ã¿ãŒãã§ãŒã¹ãèŠãŠã¿ããšãèšç»ããããã®ãšéåžžã«ãã䌌ããã©ã°ã€ã³-Khabragolik 圌ã¯ãŸãæ°åã衚瀺ããŸã-ããã¯ããªããå¿ èŠãªãã®ã§ã¯ãããŸãããïŒ ;ïŒ
ç¹å¥ãªé埳çéå£ããªããã°ã圌ã®é åžããããããŒããã©ã€ãã«ããŠã³ããŒãããŸãããXPI圢åŒã®ãã©ã°ã€ã³ã¯ãã¹ãŠãããŸããŸãªãã¡ã€ã«ãå«ãZIPã¢ãŒã«ã€ãã«éããªãããšã«çæããŠãæ¡åŒµåãhabraholic-0.2.zipã«å€æŽããŸãã ã ã©ããã«è§£åããã€ã³ãã³ããªã®ãã©ã°ã©ã5ãé©çšããŠãç©ã®ã€ã³ãã³ããªãäœæããŸããã
+ã¯ããŒã +ã³ã³ãã³ã -panel.xul //ãã©ã°ã€ã³ã®æ¬äœã XUL *ãœã±ããã®èª¬æ -script.js //ããã¯ãã§ã«éã§ãã ãŸããããæ£ç¢ºã«ã¯å¿...æ¬èœã èŠããã«ããã¹ãŠã®javascriptå®è¡å¯èœã³ãŒã -prefs.xul //èšå®ãŠã£ã³ããŠã®èª¬æ -habr.ico //倧æåã®Hãå«ãå¥åŠãªçµµã¯ãããããhabrahabrã象城ããŠããŸã +ããã©ã«ã +èšå® -defaults.js //ãã©ã°ã€ã³ããã©ãŠã¶ã«æ°žä¹ ã«ä¿åããå€æ°ã®ããã©ã«ãå€ããããŸãã éåžžã¯èšå®ããããŸã -install.rdf //ãã©ã°ã€ã³ã説æããå¥åŠãªXMLãã¡ã€ã« -chrome.manifest //ãã©ãŠã¶ã®ããŒãæã«ãã©ã®XULãã¡ã€ã«ãæ¥ç¶ãããããã©ãŠã¶ã«äŒããŸã
*-ããã¯ãã€ã³ã¿ãŒãã§ãŒã¹ãèšè¿°ããXMLããŒã¹ã®èšèªã§ãã XHTMLã«äŒŒãJSããµããŒãããŠããŸã-ããã ãã§ãã ãã©ã°ã€ã³ã«æžã蟌ãŸããŸãã
ç§ã¯install.rdfãã¡ã€ã«ããå§ããŸããã ãããéããŠãç§ã¯æèã®è¡ãèµ°ã£ãïŒ
ç§ã¯ãŸã äœãæå³ããã®ãç解ã§ãããè©ŠããŠã¿ãŸããã§ããããã©ã°ã€ã³ã®ååãã©ãã³æåã§ç¬ã®åãšç¬ã®åŸãã«å ¥ããŸãã-ç§ã®å§ãšåã<emïŒid> habraholic@vladislav.semenov </ emïŒid>
ããŒãžã§ã³ 念ã®ããã0.1ãèšå®ããŸã<emïŒããŒãžã§ã³> 0.2 </ emïŒããŒãžã§ã³>
åŸã§ãããäœã§ãããïŒã¿ã€ãïŒã¹ãã³ããã©ã°ã€ã³ããŸãã¯ãã®ä»ããŸãããã®ãããªãã®ïŒãèŠã€ããã®ã§ã觊ããªãããšã«ããŸããã ãã©ã°ã€ã³ã倧ããç°ãªãå¯èœæ§ã¯ã»ãšãã©ãããŸããããŸããå€æŽããŸããã<emïŒtype> 2 </ emïŒtype>
chromeïŒ//ããã¯ããã©ã°ã€ã³ã®/ chrome /ãã£ã¬ã¯ããªã®ãã¹ãŠã®ã³ã³ãã³ããå«ããã£ã¬ã¯ããªãžã®ãªã³ã¯ã®ãããªãã®ã§ãã ããã¯/chrome/contents/prefs.xulãã¡ã€ã«ãæããŸãã ãã©ã°ã€ã³ã«èšå®ããªãã£ãããããã®è¡ãã³ã¡ã³ãã¢ãŠãããŸããïŒïŒ<emïŒoptionsURL> chromeïŒ//habraholic/content/prefs.xul </ emïŒoptionsURL>
å®éšçã«ïŒãŸãããã«ããèŠãŠãã ãããïŒIDã¯ã¢ããªã±ãŒã·ã§ã³èå¥åã§ããããšãããããŸãããããšãã°ãFirefoxã®å Žåã¯{ec8030f7-c20a-464f-9b0e-13a3a9e97384}ã§ãå€æŽããªãã§ãã ããã æ倧ããŒãžã§ã³ã¯3.1a1preã«ãã£ãŠèšå®ãããŸããïŒåãå Žæããããã«ããããç§ã¯ç¥ããŸããïŒã<emïŒtargetApplication> <説æ> <emïŒid> {ec8030f7-c20a-464f-9b0e-13a3a9e97384} </ emïŒid> <emïŒminVersion> 1.5 </ emïŒminVersion> <emïŒmaxVersion> 2.0.0ã* </ emïŒmaxVersion> </説æ> </ emïŒtargetApplication>
ãŸãããããã¯ãã¹ãŠæ確ã§ãã ãã¡ã€ã«ãå€æŽããŠä¿åããéããŸããã<emïŒname> Habragolic </ emïŒname>ãªã©
次ã®è¡ã¯chrome.manifest ãã¡ã€ã«ã§ã ã ãã®äžã§ãpanel.xul ãã¡ã€ã«ãžã®ãã¹ã®ã¿ãå€æŽããŸãããhabraholicãèªåã®ååã«çœ®ãæããŸãã ã
/defaults/preferences/defaults.jsãèŠããšãã ããŠãŒã¶ãŒãæ§æå¯èœãªå€æ°ãããªãããšãããããŸããã ã³ã¡ã³ãã¢ãŠãããŸããïŒ//ïŒã
次ã«ããã¡ã€ã«/chrome/content/prefs.xulãäžèŠãªãã®ãšããŠåé€ãïŒèšå®ã¯ãããããŸããããïŒïŒã / chrome / content / habr.icoãã¢ã€ã³ã³ã«çœ®ãæããŸãã ã
èšèšãšã¬ã€ã¢ãŠãã®æãæ¥ãŸããïŒ /chrome/content/panel.xul æåã«ããããšã¯ããã¹ãŠã®èŠçŽ IDãšã©ãã«ãå€æŽããããšã§ããããhabraholicããšãKarmaããå¥ã®èšèã«çœ®ãæããŸããã èšå®é ç®ãšã»ãã¬ãŒã¿ãŒïŒMenuseparatorïŒãã¡ãã¥ãŒïŒèŠçŽ å ã§èª¬æïŒããåé€ããåèªãkarmaããæåã®é ç®ã®ããã¹ãããåé€ããŸããã ã¢ã€ã³ã³ãšã¹ã¯ãªããïŒããã³<script ...>ïŒãžã®ãã¹ãå€æŽããonclick = ``ããã³oncommand = ''ãšåŒã°ããjavascripté¢æ°ã®ååãå€æŽããŸããã
ããã§ãå°ãéã³ãŸããããã¢ã€ã³ã³ãããã«è¿œå ããã©ãã«ããã®ä»ã®èŠçŽ ãè¿œå ããŸãã ããããããªãã¯ãã€ã§ããããããšãã§ããããã°ã©ã ã®ã³ãŒãéšå/chrome/content/script.jsã«é²ã¿ãŸãã
ãã¹ãŠã®æ©èœã®ååãå€æŽããããšããå§ããŸããïŒååããhabraholicãåé€ãããªã©ïŒã ãããã圌ã¯ããããã¹ãŠãèŠãŸããïŒ
- ãã ã®ã³ãŒã -衚瀺ããããšããã«éåžžã©ããå®è¡ãããŸãã ãã®åŸã圌ã¯ãã©ãŠã¶ã®èªã¿èŸŒã¿ã«ã€ãã³ããã³ãã©ãŒã®ã¿ãå²ãåœãŠãŸãã-ãã®ãŸãŸã«ããŠããããã³ãã©ãŒã®ååãå€æŽããŸããã
- habraholicLoadã¯ãŸãã«ãã®ãã³ãã©ãŒã§ãã 5åããšã«ã«ã«ããæŽæ°ããæ©èœãèµ·åããŸãã ãã³ãã©ãŒã¯å€æŽããããèµ·åãããé¢æ°ã®ååãå€æŽãããŸããã
- habraholicLeftClick-ã¯ãªãã¯ãåŠçããŸãã ãŠãŒã¶ãŒåãèšå®ã«å ¥åããããšãã«ã«ãã¢ããããŒã¿ãŒãåŒã³åºããŸãã ããã§ãªãå Žåã¯ãèšå®ãéãé¢æ°ãåŒã³åºããŸãã ãã¹ãŠã®IFãåé€ããæåã®ãã©ã³ããæ®ããŸãããçŸåšã¯æŽæ°ã®ã¿ã§ãã
- habraholicUpdateKarma-ã¢ããããŒã¿ãŒèªäœã èšå®ãæ§æãããŠããå Žå-habra-apiãžã®XMLHttpRequestãäœæããŸãã æ§æãããŠããªãå Žåã¯ãã©ãã«ã®å 容ãå€æŽããŠããã¹ãŠãæ§æãããšããæ¥ãããšããŠãŒã¶ãŒãç解ã§ããããã«ããŸãã 圌ã¯ãªããžã§ã¯ãã®äœæã®ã¿ãæ®ãããã¹ãŠã®ãã§ãã¯ãåé€ããã¢ã¯ã»ã¹ãããŠããURLãå€æŽããŸããã
- habraholicUpdateKarmaRepeatedly - habraholicLoadã«ãã£ãŠåŒã³åºããã10åããšã«habraholicUpdateKarmaïŒïŒãåŒã³åºãåãé¢æ°ã æéééïŒããªç§åäœïŒãšåºæåïŒé¢æ°åïŒãå€æŽããŸããã
- habraholicSetKarma-ãã®XMLHttpRequestããã®ã³ãŒã«ããã¯ã 次ã®ããã«åäœããŸããããã©ã«ãå€ã§å€æ°ãäœæããtry {}ã§ãµãŒããŒå¿çããkarmaããã³habrasilaã®å€ãåé¢ãããããã®å€æ°ã§çœ®ãæããããšããŸãã ç§ã¯XMLãæã£ãŠããªãã£ãã®ã§ãåãåã£ãããŒãžã®ãã¹ãŠã®HTMLã³ãŒããå€æ°ã«åŒã蟌ã¿ãå®æçã«å®è¡ããŸããã
var html = httpRequest.responseText; mythings = / <li id = "things"> <a href="\/my\/"> <span> <em>ç§ã®ãã®ïŒã+ïŒïŒ<\ / em> /ãexecïŒhtmlïŒ; ifïŒmythingsïŒmythings = mythings [1]; ãã以å€ã®å Žåmythings = '';
- habraholicShowPrefs-èšå®ãŠã£ã³ããŠã衚瀺ããŸãã åé€ããŸããã
- habraholicGetUsernameãhabraholicIsRatingPositionHidden-æ°žç¶çã«ä¿åãããèšå®ãååŸããŸãã åé€ããŸããã
- habraholicLoadProfile-ãŠãŒã¶ãŒãããã¡ã€ã«ãéããŸãã ç¬èªã®ç®çã®ããã«å€æŽãããŸããã
- habraholicLoadPage-ãšãŠã䟿å©ãªãã®ïŒå¿ èŠãªã¢ãã¬ã¹ã§ããŒãžïŒã¿ãïŒãéããŸãã ãã€ãŒã«ãã¯ãªãã¯ããã ãã§çŽ æŽãããåéïŒãæ°ããã¿ãã§éããïŒã ååãå€æŽããããã觊ããããŠããŸããã
çãã æžããããã§ãã ããã§ããã¹ãŠã®ãã¡ã€ã«ãplugin.zipã«ããã¯ãããããplugin.xpiã«ååå€æŽããŠããããã©ãŠã¶ãŒã«ãã©ãã°ããŸããã 圌ã¯ãããã€ã³ã¹ããŒã«ããããšãææ¡ããç§ã¯ããããã§ã-ç§ã¯ãã¿ã³ãæŒããŠããããã©ãŠã¶ãåèµ·åããŸãã
ãã©ãŠã¶ã¯èœã¡ããããã«ã衚瀺ãããŸããã ãã¡ãããããã«ã¯ãã¹ãŠãééã£ãŠããããšã瀺ããŠããŸããããããã€ãã®ãããã°ïŒã¢ã©ãŒãæ©èœã¯æ£åžžã«æ©èœããŠããŸããïŒãšèãçŽããåŸããã¹ãŠãéåžžã®åœ¢åŒã«æ»ããŸããïŒãã®ãããæ¯åãã©ã°ã€ã³ãåããã¯ããååãå€æŽããŠãã©ãŠã¶ãŒãŠã£ã³ããŠã«ãã©ãã°ããŸãã-çããããšã³ã¿ãŒãã€ã¡ã³ã;ïŒã ãã£ãïŒ
ããã¯å°ããªåé¡ã§ããïŒ /chrome/content/prefs.xulã®ããŒãžã§ã³ãèªããããª0.2ã«å€æŽããŠã addons.mozilla.orgã«ã¢ããããŒãããŸãã ã ç§ã¯ããã«ããããã®ããšãå ¥åããªããã°ãªããŸããã§ããããæçµçã«ããã«èªåã®ãã©ã°ã€ã³ããŒãžãæã«å ¥ããŸããããã¡ãããæå³ãããŠãŒã¶ãŒãéãŸã£ãå Žæã§ãããžã®ãªã³ã¯ãå ¬éããã®ã¯é ããããŸããã§ããã ããã«èŠã€ãã£ããšã©ãŒãé·ãéä¿®æ£ããåŸãç§ã¯è¯ãåäœãããã©ã°ã€ã³ã®å¹žããªèè ã«ãªããŸããã ãããŠãããªããhabrachelovekïŒ