javascriptã§ã®è€æ°è¡ããŒã¿ã®ã¯ãã¹ãã©ãŠã¶ãŒè¡šçŸã®åé¡ã«ã€ããŠèª¬æããŸãã Firefoxãä»ã®ãã©ãŠã¶ãšåãããã«æ©èœãæäœããæ¹æ³ãç¥ã£ãŠããã°ãããã¯åé¡ã§ã¯ãªãã£ããããããŸããã 2æ¥éã®åªåã«ãããããããåäžã®ã¯ãã¹ãã©ãŠã¶ãŒè¡šç€ºæ¹æ³ã¯èŠã€ãããŸããã§ããã ãããããªãã圌ã¯ããããuserscripts.orgã§æ¢ã«äœ¿çšããå§ããŠããã§ãããã ãããŸã§ã®ãšãããå¥ã®è¡šç€ºæ¹æ³ããããŸããFirefoxãŠãŒã¶ãŒã¹ã¯ãªããçšãšãä»ã®ãã¹ãŠã®ãŠãŒã¶ãŒçšã§ãã ãŸããScriptishã®å Žåãã¡ã¿ããŒã¿åœ¢åŒïŒãã£ã¬ã¯ãã£ãïŒãèªã¿åãããšãã§ããŸããããã¯ãä»»æã®åœ¢åŒãã«ããŒããŸãããããŠãŒã¶ãŒã¹ã¯ãªããã§æãããèŠãããåé¡ã解決ããŸãã ããŒã¿ãšã¹ã¯ãªããã1ã€ã®ãªã¯ãšã¹ãã§1ã€ã®ãã¡ã€ã«ã§åä¿¡ãããã®ãã¡ã€ã«ã¯ãtext / javascriptãã¿ã€ãã§ãããããå€éšHTMLãXMLãããã³ããŒã¿è€è£œãžã®ã¢ã¯ã»ã¹ãå«ãããµãŒããŒãžã®2ã€ã®ãªã¯ãšã¹ãã䌎ããœãªã¥ãŒã·ã§ã³ã¯èæ
®ããŸããã
Firefoxãé€ããã¹ãŠã®ãã©ãŠã¶ãŒã§ã®è€æ°è¡ããŒã¿è¡šç€º
ãã¹ãŠã®ã¹ã¯ãªããããŠãŒã¶ãŒããã³ã¬ã®ã¥ã©ãŒçšã®ãœãªã¥ãŒã·ã§ã³ã§ãããFirefoxçšã§ã¯ãããŸããã
s = function(){}.toString()
ããã«ãæ©èœãã©ã±ããã®ããã¹ããæ£èŠè¡šçŸã§ã¯ãªã¢ãããšãçŽç²ãªè€æ°è¡ããŒã¿ãåŸãããŸãã ã³ã¡ã³ã '* /'ã®æåŸã®æåãããŒã¿ã«å«ãŸããŠã¯ãªããªããšããäºå®ãç¡èŠããŸãã ããã念é ã«çœ®ããŠãå
¥åããã¹ãã«ã¯æå°éã®æ€èšŒãšå®å
šãªæååã§ã®çœ®æãå¿
èŠã§ãããã®åŸãæååsãåãåã£ãåŸã«ãã©ã³ã¹ã³ãŒãããå¿
èŠããããŸãã
ããããäœããã®çç±ã§ãã®ã¡ãœããã¯Firefoxã§åãå
¥ããããŸãã-é¢æ°ãæååè¡šçŸïŒ.toStringïŒïŒã. toSourceïŒïŒïŒã«è»¢éãããšãããããçš®é¡ã®ã³ã¡ã³ããåã¿ä»ããŸãã ã³ã¡ã³ã以å€ã®æ§æçã«æ£ããããã¹ãã¯æå¹ãªãŸãŸã§ãããããã¯ãã¡ããããŒã¿ã®èªç±ãå³ããå¶éããŸãã ç¹ã«ãããã¹ãã¯æååãŸãã¯æ¹è¡ïŒè¡æ«ïŒã®åã®ãšã¹ã±ãŒãïŒã\ãïŒãå«ãéæšæºã®è€æ°è¡æååã«ã©ããã§ããæå³ã®ãªããæ§æçã«æ£ããè¡šçŸã®ãŸãŸã«ããŸãã éæšæºã®ããã¯ã¹ã©ãã·ã¥æ¹åŒã«ããããããããã®ãããªè€æ°è¡ã®æååã¯ãã¹ãŠã®ãã©ãŠã¶ã§ãµããŒããããŠããŸãã
é©åãªé¢æ°ããªãããããŠãŒã¶ãŒã¹ã¯ãªããã«GreaseMonkeyäœæè
ã®ä»£ãããäœæããå¿
èŠããããŸãããããã«ã¯ãã³ã¡ã³ãè¡ïŒã¡ã¿ããŒã¿ãã£ã¬ã¯ãã£ãïŒãå«ãŸããŠããããã§ãã ã¡ã¿ããŒã¿æ§æïŒã@ããŒå€ãïŒã§ã¯ãè¡ã®çµããã«åŒçšç¬ŠãŸãã¯ããã¯ã¹ã©ãã·ã¥ã䜿çšã§ããŸããã ã¡ã¿ããŒã¿ã«ã¯ãã¹ã¯ãªããããŒãžã§ã³ã説æãè¿œå ã®ãã£ã¬ã¯ãã£ãã®ããŒã¿ãªã©ãå€ãã®æçšãªæ
å ±ãå«ãŸããŠããŸãã ããããäžè¬çã«ãä»»æã®è€æ°è¡ããŒã¿ã®å Žåããããã®è¡šç€ºã¯éåžžã«äŸ¿å©ã§ãã çµå±ã®ãšãããåè¡ãç¹å¥ãªåœ¢åŒã«å€æããããããã¹ã¯ãªããåãããŠããªãæ
å ±ãè€æ°è¡å«ããããšã§ã¹ã¯ãªãããåéããæ¹ãã¯ããã«äŸ¿å©ã§ãã
Firefoxå°çšã®.toStringWithCommentsïŒïŒé¢æ°ãããå Žåãäž¡æ¹ã®ã¡ãœãããããã°ã©ã ã§çµã¿åãããããšã§è§£æ±ºã§ããŸãã ããããããã¯ïŒå€æã§ããéãïŒããã§ã¯ãããŸããã ãã®åé¡ã解決ããããã«ãGreaseMonkeyã¯ç¹å¥ãªããŒã¿åãšæ§æãäœæããŸããïŒXML圢åŒã®è€æ°è¡ããŒã¿ã åŒã®ä»£ããã«ãã<ãã§å§ãŸããªãã©ã«ãã¹ã¯ãªããã³ãŒãã«èšè¿°ãããŸãã åçŽãªJavascriptã®å Žåãäºæ³ã©ããããã®æ§æã¯ä»ã®ãã©ãŠã¶ãŒãšåããšã©ãŒãåŒãèµ·ãããŸãã ãã®èšäºã§èª¬æãããŠããåé¡ãåŒãèµ·ããã®ã¯æ§æã®éäºææ§ã§ã-äž¡æ¹ã®æ§æãçµã¿åãããæ¹æ³ã¯èŠã€ãããŸããïŒevalïŒïŒããããŸããããã§ã«åŒçšç¬Šãååšããåäžè¡ã®ããŒã¿ã®ã¿ïŒã
ã¢ããªã³ã¬ãã«ã§å¯èœãªãœãªã¥ãŒã·ã§ã³ãã¹
ãšããã§ãGreaseMonkeyã¢ããªã³ã¬ãã«ã§ã®.toStringWithCommentsïŒïŒé¢æ°ã®äœæã¯ãä»ã®ç¹å¥ãªé¢æ°ã®äœæãšåããããç°¡åãªã¿ã¹ã¯ã§ãã
GM /
Scriptishã®èè
ã¯ãã§ã«ãããææ¡ããŠãããããããŸããã XMLãªã©ã®æ¢åã®åŒãšã³ãžã³ã§éæã§ããæã倧ããªããšã¯ãéãã1æåãŸãã¯2æåã«æžããããšã§ãããããã¯å
ã®éäºææ§ãšåããããã»ãšãã©äœ¿çšãããŸããã ãã©ãŠã¶ã«å¿ããŠæ§æãéžæããå€éšã³ãŒããžã§ãã¬ãŒã¿ãŒïŒPHPã¹ã¯ãªãããnodeJSããŸãã¯ãŠãŒã¶ãŒã®æãšé ïŒãå¿
èŠã§ãã
s = <![CDATA[ , CDATA ]]>.toString();
-Firefox + GreaseMonkeyïŒFx + GMïŒãŸãã¯Scriptishã®å Žå-ãŸãã¯ä»ã®ãã©ãŠã¶ã®äžèšã®ã³ãŒãã ããã§ã®ååã¯ãGreaseMonkeyã§ã¯ãã¹ã¯ãªããã³ãŒãå
ã§è€æ°è¡ã®ä»»æã®ããã¹ãïŒã³ã¡ã³ããå«ãïŒãèš±å¯ããä»ã®ãã¹ãŠã®ãã©ãŠã¶ãŒã§ã¯èš±å¯ãããŠããªãããšã§ãã äž¡æ¹ãçµã¿åãããããšã¯äžå¯èœã§ãã
Fx + GMã®å Žåã次ã®æ§æãæå¹ã§ãã
s = <> , </>.toString();
ãŸãã¯
s = <anyName> , </anyName>.toString();
å
éšã®ããã¹ãã«ã¯CDATAãå«ãŸããå ŽåããããŸãã ãã®XML圢åŒïŒïŒtypeof sïŒãèŠããšã 'xml'ãååŸããŸãïŒã解決ã«åœ¹ç«ã¡ãŸããã
çŽç²ãªFirefoxã«ã¯ãŸã 解決çããªãããšã«æ³šæããŠãã ããã ãããŠããã¯ããªãå¥åŠã§ã-ããªãã®ãµã€ãã§æã匷åãªéçºè
ãµããŒãã§ããé·å¹Žã®éçºã§ããã.toStringWithCommentsïŒïŒã®ãããªæ©èœã§ã-ãããã ãããããœãªã¥ãŒã·ã§ã³ã¯MDNïŒMozilla Development NetworkïŒã®è
žã«é ãããŠããã誰ãããããç¥ã£ãŠããã®ã§ããããïŒ
åè¡ã®æåã®ç ŽæïŒå€æïŒã䌎ã決å®
ããŒã¿ãç¹å¥ã«æºåã§ããå Žå-åŒçšç¬Šã§å²ãããããã¯ã¹ã©ãã·ã¥ãæåŸã«é
眮ããåæã«JSæ§æã®æå³ã§ããã¹ãå
šäœãä¿è·ããïŒåŒçšç¬Šãšããã¯ã¹ã©ãã·ã¥ã®åã«ããã¯ã¹ã©ãã·ã¥ã眮ãïŒå Žåãè€æ°è¡ïŒãã©ãŒãããæžã¿ïŒããŒã¿ãè¡šãåé¡ããããŸããã ãããããã®ãããªè§£æ±ºçã¯åžžã«åãå
¥ãããããšã¯éããŸããã ãã£ã¬ã¯ãã£ããæåã®æªã¿ãèš±å¯ããªããŠãŒã¶ãŒã¹ã¯ãªããã®å Žåãããã¯é©åã§ã¯ãããŸããã
2æåã®éãããããœãªã¥ãŒã·ã§ã³ïŒãŠãŒã¶ãŒã¹ã¯ãªããã®ã¿ïŒ
éåžžã®ã¹ã¯ãªããïŒFxããŒãžã§ã³ã§ã¯çµæãçæãããªããããç°ãªãæ¹æ³ã§ããŒã¿ãçæããå¿
èŠããããŸãïŒãŸãã¯ãŠãŒã¶ãŒã¹ã¯ãªããã®2ã€ã®ããŒãžã§ã³ã®æå/ãµãŒããŒç·šéã§ãå€éšã¹ã¯ãªãããäºææ§ã®ããã«æå°éã®ä»å
¥ãå¿
èŠãšããå Žåã«åœ¹ç«ã¡ãŸãã ããã¯ããã¹ãŠã®ãã©ãŠã¶ã®æ£ããæ§æã«é¡äŒŒããããã«ãæåã®ãéªæªãªã埮調æŽã«åºã¥ããŠããŸãã
調æŽãç°¡åã§ããã°ããã»ã©ãäœåãªæåãåãŸãªããã°ãªããªãã®ã§ãããè¯ãã§ãã
ããã§ã®ç§Theã¯ãäºåããŒã¿åŒãåçŽãªéèŠã§ãªãåŒs <ïŒ[CDATA [0]]ã§ãããCDATAãé
åå€æ°ã®å Žåã¯èšå®ããå¿
èŠããªãããšã§ãã ãããã£ãŠãä»ã®ãã©ãŠã¶ãŒã§ã¯ãã¶ã€ã³ã¯ç¡èŠãããFx + GMã®å ŽåãåŒs = <ïŒ[CDATA [0]] ...]]>; è€æ°è¡ã®XMLããã¥ã¡ã³ãã§ãã
ãã®ãœãªã¥ãŒã·ã§ã³ã¯çžäºã«æä»çã§ãã 1ã€ã®ã³ãŒãã¯Fx + GMã§ã®ã¿åäœããä»ã®ã³ãŒãã§ã¯ãšã©ãŒãçºçããŸããä»ã®ã³ãŒãã§ã¯åäœããFx + GMã§ãšã©ãŒãçºçããŸãã ããã¯ãuserscripts.orgã§ã¹ã¯ãªãããå
¬éããã®ã«ã¯äžé©åã§ããuserscripts.orgã§ã¯ãã¡ã¢ãèªãã§ããªã人ã«ãšã£ãŠãã©ãã§ãæ©èœããã¹ã¯ãªãããæãŸããã®ã§ãã èªããªãããŒãã«ã€ããŠã¯ã2çªç®ã®ã¹ã¯ãªãããªãã·ã§ã³ãé©åã§ãã2ã€ã®ã³ã¡ã³ãæåãåé€ããŠãã¹ã¯ãªãããFx + GMã§å®å
šã«æ©èœããããã«ããå¿
èŠããããŸãã ãã®ã³ãŒãã¯æ¬¡ã®ãšããã§ãã
var win = (typeof unsafeWindow !='undefined')? unsafeWindow: window; var isFxGM = typeof GM_getResourceText !='undefined';
ãã®ç¹å¥ãªè¡ã¯ãFirefoxã§æ£ããåäœããããã«ãã¹ã¯ãªããã䜿çšããå¿
èŠãããæ¹æ³ã§ãŠãŒã¶ãŒã«æãåºãããŸãã ã¢ããªã±ãŒã·ã§ã³ã«ãã£ãŠã¯ãã<ïŒãã®åã«ãdelete "/ *"ããšããè¡ããããŸã ã¹ã¯ãªããã³ãŒãã®å
容ã¯ç°ãªãå ŽåããããŸããã¹ã¯ãªããã®ã¿ã¹ã¯ã¯ãã¹ã¯ãªãããé©åã«åäœããŠããªãããšãå€æãããŠãŒã¶ãŒã«ä¿®æ£æ¹æ³ãäŒããããšã§ãïŒå¿
èŠãªæ©èœã«å°éãããšãïŒã
Fx + GMã§åäœããã¹ã¯ãªãããäœæããä»ã®ãã©ãŠã¶ã«ã¡ãã»ãŒãžãéä¿¡ãããšããå察ã®ã¿ã¹ã¯ã¯ãæ®å¿µãªãã解決ãããŠããŸãããJSåŒã®ä»£ããã«XML圢åŒã䜿çšãããšãéåžžã®Javascriptãæ£ããåäœãã解決äžå¯èœãªã¿ã¹ã¯ãäœæãããããã§ãã evalïŒïŒã䜿çšããŠè§£æ±ºã§ããŸãããä»»æã®åäžè¡ã®ããã¹ãã®ã¿ã§ãïŒããšãã°ãJSæååã«ããŒã¿ãå
¥åãããªã©ãä»ã®ãœãªã¥ãŒã·ã§ã³ã¡ãœããã§ã¯ãŸã£ããåé¡ãããŸããïŒã æ°ããæ©èœïŒGM_toStringWithCommentsïŒïŒïŒãè¿œå ããŠGreaseMonkeyãšScriptishã®ã¢ããªã³ãã©ã°ã€ã³ãäœæããŠã¿ãããšãã§ããŸããããã«ã€ããŠã¯èšäºã®æåŸã§è©³ãã説æããŸãã ãã ããããã§ã¯å
éšããGMãç¥ãå¿
èŠããããããåé¡ã¯éçºè
ïŒGreaseMonkeyãŸãã¯ScriptishïŒããªãã€ã¬ã¯ãããããšããããšã§ãã ããã«ãããã¹ã¯ãªããã®å®å
šãªäºææ§ã®åé¡ã解決ãããŸãã
éçºäŸ
ãŠãŒã¶ãŒã¹ã¯ãªããã¯ãã¹ã¯ãªããã®åã«ã³ã¡ã³ãã®åœ¢åŒã§ãã£ã¬ã¯ãã£ãã³ãã³ãã䜿çšããŸãã ãããã®åã«å¿
èŠãªã¹ã¯ãªãããæžããšããããã¯ïŒãã¹ãŠã®ãã©ãŠã¶ãŒã§ïŒæäœå¯èœãªãŸãŸã§ãã ããã¯éåžžãGreaseMonkeyã«åã蟌ãŸããç¹å¥ãªæ§æã䜿çšããŠãFx + GMã§XMLã¿ã°ã®ã³ã¡ã³ããã©ããããããã«äœ¿çšãããŸãã å
šäœã®åé¡ã¯ãã¹ã¯ãªãããä»ã®ãã©ãŠã¶ãŒãšã®äºææ§ã倱ãããšã§ãã ã·ã§ã«äžã®ã·ã§ã«ã®ã¿-Chromeã®TamperMonkeyã¢ããªã³ããããåŠçã§ããŸãã ãããŠä»ã§ã¯å¯ŸåŠããŸãããã¹ã¯ãªããã®äœæ¥ãè€éã«ãããŠãŒã¶ãŒã®èŠ³ç¹ããã¹ã¯ãªãããå¥ã®ç¬èªã®ãªã¹ãã«è»¢éããŸãã ãŸããããã¯ã¯ãã¹ãã©ãŠã¶ãœãªã¥ãŒã·ã§ã³ã§ã¯ãããŸããã
ããšãã°ãæ°ããããŒãžã§ã³ã®HabrAjaxã¹ã¯ãªããã§ã¯ãç»åïŒããŽïŒããã¡ã€ã«ããããŒã«æ¿å
¥ãããŸããããã¯ãFirefoxã·ã§ã«ã§åãå
¥ããããaboutïŒã¢ããªã³ããŒãžã®æ¡åŒµåã®åã«ããŽã衚瀺ãããä»ã®ãã©ãŠã¶ãŒã§ã¯ç¡èŠãããŸãã 500ãã€ããè¶
ããã³ãŒãã2åæžã蟌ãŸãªãããã«ãäžèšã®æ¹æ³ã§ãã£ã¬ã¯ãã£ãã䜿çšããŠããããŒãèªã¿åããããããããŒã¿ãååŸããŸãã ããã¯ããã©ã€ããŒãã¿ã¹ã¯ã ãã§ãªããããåªããã¹ã¯ãªããèªåæŽæ°ãµãŒãã¹ã«ãå¿
èŠã§ãã ããããŒãããã¹ã¯ãªããããŒãžã§ã³ã説æãå€æŽã®å±¥æŽïŒç¹å¥ãªèªå®¶è£œãã£ã¬ã¯ãã£ãã@updateãã§èšè¿°ãããŠããå ŽåïŒãèªã¿åãã
* .meta.jsãä»ããŠãµãŒããŒäžã®
å€æŽãš
æ¯èŒã ã䟿å©ãªåœ¢åŒã§æŽæ°ããããšããå§ãããŸãã 衚瀺暩ã®ãã€ããŒããŒãžã§ã³ã®æŽæ°ãå¶éã§ããŸãã Firefoxã®ããŒãžã§ã³4ããã³0.9.13ïŒ2011幎11æ3æ¥ãFirefoxã®ããŒãžã§ã³8ïŒä»¥éã®Scriptishã§ãµããŒãããããã©ãŠã¶ãŒã¹ã¯ãªããã®èªåæŽæ°ãã¯ããã«è¶
ããå©äŸ¿æ§ãäœæããŸãã
ãŠãŒã¶ãŒã¹ã¯ãªããã®ãœãªã¥ãŒã·ã§ã³ãã¹ã®äŸ
GM / ScriptishãGM_toStringWithCommentsé¢æ°ãäœæãããšããŸãã 次ã«ããŠãŒã¶ãŒã¹ã¯ãªããã§è€æ°è¡ã®ããŒã¿ãåä¿¡ããã¯ãã¹ãã©ãŠã¶ãŒã¯ãäžå¿
èŠãªåé¡ãªãã«ãªããŸãã
var f = function(){}; if(typeof GM_toStringWithComments =='undefined') GM_toStringWithComments = function(f){return f.toString();}; var s = GM_toStringWithComments(f).replace(/(^function(){\/\*|\*\/$)/gm,'');
ããã§ãã®ã³ãŒããæ©èœããŸãããFx + GMïŒããã³Fxã®ã¿ïŒã§ã¯ç©ºã®æååãè¿ãããŸãã
ããã§ãç¹ã«ãŠãŒã¶ãŒã¹ã¯ãªããã«ã€ããŠã¯ãScriptishã«ã¯è¯ããã¥ãŒã¹ããããŸã...
æè¿ããã®ã¢ããªã³ã«ã¯ã¡ã¿ããŒã¿ãèªã¿åãããšãã§ããæ©èœããããŸã-toStringWithCommentsïŒïŒã®ãŸãã«ãã®ç®çãèšç»ãããŠããŸããããããéå®çãªã¢ããªã±ãŒã·ã§ã³ã§ããã GreaseMonkeyã«ã¯ãªãã®ã§ãæ瀺ãèªãŸãªããŠãŒã¶ãŒã®ããã«ããã®é¢æ°ãå£åã§å®çŸ©ããå¿
èŠããããŸã-Fx + GMã«åã笊å·ãä»ããŠããŠãŒã¶ãŒã«æ¬¡ã«äœããã¹ãããç¥ãããŸãã
ãã£ã¬ã¯ãã£ãã¯ãããŒãšå€ã®ãã¢ã®åœ¢åŒã§æ£ããå®è¡ããã説æãåéãããããäœã¬ãã«ã®ç®çé¢æ°toStringWithCommentsïŒïŒã眮ãæããªãããšã«æ³šæããŠãã ããã
APIé¢æ°Scriptish
GM_getMetadataïŒïŒã«äŒããŸãïŒ
ããã¯ã¡ã¿ããŒã¿ãçæããŸã-ã³ã¡ã³ããšããŠèšèšããããã£ã¬ã¯ãã£ãã¯ããŠãŒã¶ãŒã¹ã¯ãªãããScriptishã«æž¡ãããŒã¿ãèªã¿åããŸãã äœæ¥ã«å¿
èŠãªããŒã¿ïŒã¹ã³ãŒãïŒã«å ããŠããŠãŒã¶ãŒã¯ã¹ã¯ãªããã®ååãããŒãžã§ã³ãã©ã€ã»ã³ã¹ãããã³ã¹ã¯ãªããã«åœ¹ç«ã€ããŒã¿ãäœæã§ããä»ã®ãã¹ãŠã®ãã£ã¬ã¯ãã£ãã«é¢ããæ
å ±ã«ã¢ã¯ã»ã¹ã§ããŸããããšãã°ãã¹ã¯ãªããã®å€æŽã®åã説æ以åã®ããŒãžã§ã³ãšãµãŒããŒäžã®ã¹ã¯ãªããçªå·ã䜿çšããŸãã
Firefox + Scriptishçšã®åŸ
æã®ã¯ãã¹ãã©ãŠã¶ãŠãŒã¶ãŒã¹ã¯ãªãããäœæããŸãïŒGreaseMonkeyã䜿çšãããšãæå調æŽã®å¿
èŠæ§ããŠãŒã¶ãŒã«éç¥ããŸãïŒã å®éã®åäœäŸã¯ã
HabrAjaxã¹ã¯ãªããããŒãžã§ã³0.81+ã§èŠãããšãã§ããŸãã ã¹ã¯ãªãããã¡ã€ã«ã®å
é ã«ã¯ãã¡ã¿ããŒã¿ã®ã©ãããŒããããŸãã Fx + GMã®å Žåãã¡ã¿ããŒã¿ã®æœåºãå¿
èŠãšããæ©èœãé¢ä¿ããŠããå Žåã«ã®ã¿ãäžäŸ¿ããæãåºãããŸãã ãŠãŒã¶ãŒã¯ãã¹ã¯ãªããã®2ãã€ããå€æŽããããã«æ±ããããŸãïŒæŽæ°ã®ãã³ã«ãããè¡ãå¿
èŠããããŸãïŒïŒãŸãã¯ãã¢ããªã³ãScriptishã«å€æŽããã ãã§ãã
çµæ
ã芧ã®ãšãããäžè¬çãªã¯ãã¹ãã©ãŠã¶ãœãªã¥ãŒã·ã§ã³ã¯èŠã€ãããŸããã§ããã ããããååšããªããããããŸããããäžäŸ¿ãã®åèšã«ãããã©ããã§è§£æ±ºããå¿
èŠããã£ãããå°ãªããšãåé¡ãææãããŸããã éåžžã®ã¹ã¯ãªããã®å ŽåãFirefoxã«ã¯ãŸã£ãã解決çããããŸããã userskiptovã«ã¯ãFx + GMã®åŒã®XMLæ§æã®åœ¢åŒã®éã¯ãã¹ãã©ãŠã¶ãœãªã¥ãŒã·ã§ã³ãšãä»ã®ãã©ãŠã¶çšã®ç¹å¥ã«ã©ãããããã³ã¡ã³ãããããŸãã Firefox + Scriptishããã³ãã®ä»ã®ãã©ãŠã¶åãã®ã¯ãã¹ãã©ãŠã¶ãœãªã¥ãŒã·ã§ã³ã¯ãã¡ã¿ããŒã¿ã®åä¿¡å°çšã§ãã
GreasemonkeyãScriptishããŸãã¯Javascriptã®toStringWithCommentsïŒïŒã®ãããªç¹å¥ãªæ©èœãçµéšãã誰ããç¥ã£ãŠããå Žåã¯ããç¥ãããã ããã 誰ããGMãScriptishã®éçºè
åãã«åé¡ãå®åŒåã§ããããæ¢ã«èª¬æãããŠããå Žæãç¥ã£ãŠããå Žåã¯ãããã«ã€ããŠãç¥ãããŠãã ããã
ããã§ããŠãŒã¶ãŒã¹ã¯ãªããã®
ãã£ã¬ã¯ãã£ã ïŒãã以äžïŒã
èªã¿ããå Žåã¯ãFirefox + GMã®åå¥ã®ããŒãžã§ã³ãç¶æãããããŠãŒã¶ãŒã«ãªãã€ã³ããŒãç¶æããå¿
èŠããããŸãïŒãã ããScriptishã«ã¯æ³šæãå¿
èŠã§ãïŒã ã¿ã¹ã¯ã®ç¯å²ãè¶
ãã解決çãšããŠãä»»æã®ããŒã¿ãå¥ã®ãã¡ã€ã«ã«ä¿åããAJAXã§èªã¿åãããšã«åé¡ã¯ãããŸããã