以åã¯ã[ãã¡ã€ã«]> [ .user.js
ãéã]ãéžæãããšãã€ã³ã¹ããŒã«ãããŠããŸããã ãããŸã§ã®4.0ã§ã¯ããã¡ã€ã«ãéãã ãã§äœãå®è¡ãããŸããã
ããããããïŒäžèŽãã¿ãŒã³ã®ããã¥ã¡ã³ãïŒïŒ ã¹ããŒã ã®äžèŽã»ã¬ã¯ã¿ãŒã§*
ã䜿çšãããšãhttpãŸãã¯httpsã«ã®ã¿ã°ããããŸãã file://
äžèŽãããã®ãè¿œå ããããšããå§ãããŸãã
ãããŸãã¯<all_urls>
ã»ã¬ã¯ã¿ãŒã
file:///
ã¹ã¯ãªãããæ€åºããããã«äžèŽãã¿ãŒã³ãè¿œå ãããšãXHRãèµ·åãããã®URLã®ã³ã³ãã³ãã®èªã¿åãã«å€±æããŸããããã¯é©ãã¹ãããšã§ãã
ç§ã¯ãããå°ã調ã¹ãŠããŸããã ãããŠãç§ã¯2ã€ã®çµè«ã«éããŸããã ãã®åé¡ã¯ãXHRãä»ããèªã¿åãå°çšã§ãã£ãŠãããã¡ã€ã«ã·ã¹ãã ã«ããWebExtensionsãžã®ã¢ã¯ã»ã¹ãçŠæ¢ããããšã«é¢ä¿ããŠããå¯èœæ§ããããŸãïŒããã«é¢ãããœãŒã¹ã¯çŽæ¥ãããŸãããç·šéïŒããã®äžçªäžã«ãããŸãïŒã ãŸãã¯ãåäžçæå ããªã·ãŒã«é¢é£ããŠããå¯èœæ§ããããŸãã
Gecko 1.9以éããã¡ã€ã«ã¯ä»ã®ç¹å®ã®ãã¡ã€ã«ã®ã¿ãèªã¿åãããšãã§ããŸãã å ·äœçã«ã¯ãå ã®ãã¡ã€ã«ã®èŠªãã£ã¬ã¯ããªãã¿ãŒã²ãããã¡ã€ã«ã®ç¥å ãã£ã¬ã¯ããªã§ããå Žåã«ã®ã¿ããã¡ã€ã«ã¯å¥ã®ãã¡ã€ã«ãèªã¿åãããšãã§ããŸãã
file://
ãããã³ã«ã䜿çšããŠãããã§ã¹ãã§å®çŸ©ããããã¹ã«ãã¡ã€ã«ã·ã¹ãã ãã¢ã¯ã»ã¹ã§ããããã«ããã«ã¯ããã°ã¬ããŒããæåºãã䟡å€ããããããããŸããã
ãããããã¯ããããããã¡ã€ã«ãªããã®ã«ãŒã«ã§ãã ããã«ã€ããŠã®å ¬åŒã®ã¬ã€ãã³ã¹ãã©ãã§å ¥æã§ãããããããŸããããç§ãããã«ã€ããŠèãããšãä»ã§ã¯ãããçå®ã§ããããšãç§ã¯ç¥ã£ãŠããŸãã æ°ãããã¡ã€ã«ãäœæããããã®ããŠã³ããŒãAPIã®ãããªéåžžã«ç¹å¥ãªäŸå€ã®ã¿ãçºçããŸãã
ãã©ãã°ã¢ã³ããããããçŽæ¥åŠçããããïŒLOLïŒæ¢ã«éããŠããã¿ãã®ã³ã³ãã³ããèªã¿åã£ãããããããªåé¿çãèãåºãããšãã§ããŸãã ãã ããçžå¯Ÿçãªã¢ã€ã³ã³/ãªãœãŒã¹/èŠä»¶ã®ååŸã«å€±æãããããããã«åé¿çããªããã°ãããã§ãå®è¡ãããŸããã
ã€ã³ã¹ããŒã«ããŒãžã«ç§»åããåã«ã storage.localã䜿çšããŠãURLãããŒãšããŠäœ¿çšããŠã³ã³ãã³ãããã£ãã·ã¥ã§ããŸãããïŒ ãã§ã«å€æ°ã«ã³ã³ãã³ãããããŸãã ãã¡ãããã€ã³ã¹ããŒã«ããã/æããã«ã€ã³ã¹ããŒã«ãããŠããªãå Žåã¯ããã£ãã·ã¥ãã¯ãªã¢ããå¿ èŠããããŸãã WebExtensionsã«äœããã®äžæã¹ãã¬ãŒãžããããæåã§åé€ãåŠçããå¿ èŠããªãå Žåã¯ããã䟿å©ã§ãã
ç§ã¯ç§ãèšã£ãããšããããåããŠããŸããããããŠããã¯ç§ãæã£ãã»ã©ç°¡åã§ã¯ãããŸããã ãŸããã©ã®ãŠãŒã¶ãŒã¹ã¯ãªãããbrowser.storage.local
ã¢ã¯ã»ã¹ã§ãããããGreasemonkeyãªã©ã®ã¢ããªã³ã«ãšã£ãŠæ¬è³ªçã«å®å
šã§ãªãã¹ãã¬ãŒãžã§ãã 次ã«ãã¡ãã»ãŒãžãä»ããŠã³ã³ãã³ããããã¯ã°ã©ãŠã³ãã¹ã¯ãªããã«éä¿¡ããå Žåãåæ§ã§ãã ã¡ãã»ãŒãžãscript-detect.js
ããã®ã¿éä¿¡ãããããã«ããããä¿è·ããæ¹æ³ãããããããŸããã ãŸããã¹ã¯ãªããã®éåææ§ã®ããã script-detect.js
ããŠãŒã¶ãŒã¹ã¯ãªããã®åã«å®è¡ããããã©ããã¯å®å
šã«ã¯ããããŸããïŒããã«ã€ããŠããã€ãã®ãã¹ããè¡ããŸãïŒã
ãããŠãã¡ãããç§ãééã£ãŠããªãéããããã¯ã°ã©ãŠã³ãã¹ã¯ãªããã¯ã©ã®ããã²ãŒã·ã§ã³ãªã¹ããŒã§ãDOM /ã³ã³ãã³ããžã®åç §ãåãåããŸãããïŒ
['*://*/*.user.js']
äžèŽããonBeforeRequest
ã䜿çšããŠããŒãžã®ã³ã³ãã³ããååŸãã StreamFilterãäœæã§ããããšããã©ã³ãã§ããããã¹ãããã³ãŒããå®è£
ããŸããããäœãä¿®æ£ããªããããçŸæç¹ã§ã¯ãã«ãªã¯ãšã¹ãã¯ãããŸããã ãã ãã以åã®æçš¿ã§åãäžããã»ãã¥ãªãã£äžã®æžå¿µã¯åé¿ãããŸãã
æ®å¿µãªãããããã¯è°è«ããããã¡ã€ã«ã®åé¡ã解決ããŸããã ãã®äžã®ããã€ãã®bugzillaãã±ããïŒ
https://bugzilla.mozilla.org/show_bug.cgi?id=1341341
https://bugzilla.mozilla.org/show_bug.cgi?id=1266960
ç§ã¯ïŒ2671ããããã«åããããŸãã
ãã®ã¹ã¬ãããããŒã«ã«ãã¡ã€ã«ããã®ã€ã³ããŒãã«é¢ãããã®ã§ããå Žå....ãã®åŸ..ã
XHRã䜿çšããŠããŒã«ã«ãã¡ã€ã«ãèªã¿åãã®ã¯ãªãã§ããïŒ ããã¯ãèµ·æºãšèš±å¯ã«é¢ããŠããããçš®é¡ã®è€éããåŒãèµ·ãããŸãã
ç°¡åãªæ¹æ³ã¯ã input type="file"
çµæããnew FileReader()
ã䜿çšããããšã§ãã
ãã®ã¹ã¬ãããfile:///.....user.js
URLãã¹ã¯ãªãããšããŠèªèããŠã€ã³ã¹ããŒã«ããããšã«é¢ãããã®ã§ããå Žåãããã¯å¥ã®åé¡ã§ãããå¥ã®è§£æ±ºçã§ãã
ç°¡åãªæ¹æ³ã¯ãinput type = "file"ã®çµæããæ°ããFileReaderïŒïŒã䜿çšããããšã§ãã
ãããããã¯ããŸããããããããŸããã file://
ãã¹ã«ç§»åããæ¡åŒµæ©èœã«ãã¹ãŠãå®è¡ãããã»ã©åªé
ã§ã¯ãããŸããããæ©èœããå¯èœæ§ããããŸãã ã¯ãŒã¯ãããŒã®å€§éšåã¯åããŸãŸã§ããå¯ââèœæ§ããããŸãã
import script -> script selected -> contents cached in backend -> install dialog prompt -> retrieve content from backend -> continue install as usual
ãŸããããã²ãŒã·ã§ã³ã¯ãŒã¯ãããŒãç¶æããããšãããšãã«äœ¿çšããããšããŠããæ¹æ³ãããã¯ããã«å®å šã§ãã
ãinputtype = "file"ãã䜿çšããŠãåäœããWebæ¡åŒµã®äŸãèŠã€ããŸããã ãã£ãã·ã¥ããå¿
èŠã¯ãªãããã§ããçŽæ¥ã€ã³ããŒãã§ããŸãã
https://github.com/mdn/webextensions-examples/pull/171/files/6c066cfff4e8c662984f704cb17c8b39211ed062#diff -098de1750b345156f3cfd46f8199aa34
ãã£ãã·ã¥ããå¿ èŠããªãããã§ãçŽæ¥ã€ã³ããŒãã§ããŸã
ãã£ãã·ã¥ã_å¿ èŠ_ã§ãããšããããšã§ã¯ãªãããããå®å šå¯Ÿçã§ãã .user.jsã«ç§»åãããšããšåãããã«ãã¹ã¯ãªããã«é¢ããæ å ±ã瀺ããã€ã¢ãã°ããããã¢ãã衚瀺ãããŸãã ã€ã³ããŒããããšããåãããšãèµ·ãããšæããŸãã ãããã£ãŠãéåžžã®ããŒã¿ããŒã¹ä»¥å€ã®å Žæã«ã¹ã¯ãªããã®å 容ãä¿åããå¿ èŠããããŸããããã«ããããŠãŒã¶ãŒãã€ã³ã¹ããŒã«ãã¿ã³ãã¯ãªãã¯ããŠããã¹ã¯ãªããã®å 容ãåŒãç¶ã䜿çšã§ãããŠãŒã¶ãŒã«å床ããã³ããã衚瀺ããå¿ èŠããããŸããã
ãããã¹ãã¬ãŒãžAPIã䜿çšããŠãã£ãã·ã¥ãããããã©ããã®ã°ããŒãã«ãªããžã§ã¯ãã«ãã£ãã·ã¥ããããã¯ãã¯ãŒã¯ãããŒã«ãšã£ãŠç¹ã«éèŠã§ã¯ãããŸããã
ãŸããã€ã³ããŒãæ©èœã¯ã移è¡ã®åé¡ãæ±ããŠãã人ã ã«åœ¹ç«ã€ãããæåªå äºé [1]ã«ãªãã¯ãã§ãã 3.xãããã¡ã€ã«ãã€ã³ããŒãããã ãã§ãã
[1] @arantiusãããã»ã¹ãã©ã®ããã«æ©èœãããã«ã€ããŠããã€ãã®ã¢ã€ãã¢ãæã£ãŠãããã©ããã
äŸãå¿ èŠãªå Žåã¯ãããã€ãã®ã¢ããªã³ã«import./ExportããããŸãã
ã€ã³ããŒãã¯ãŠãŒã¶ãŒãéå§ãããããç¹å¥ãªæ³šæ/ãããã¢ãã/éç¥/èŠåã¯å¿ èŠãããŸããã
ãã€ã¢ãã°ã®1ã€ã«ã€ã³ããŒããã¿ã³ïŒãã¡ã€ã«å
¥åïŒãè¿œå ããŸã
ãŠãŒã¶ãŒããããã¯ãªãã¯ãããšããã¡ã€ã«ããã«ãŒãéããŸãããŠãŒã¶ãŒã¯å¿
èŠãªãã¡ã€ã«ãéžæãã[éã]ãã¯ãªãã¯ããŸãïŒãã¹ãŠã®çµã¿èŸŒã¿HTTML5ïŒ
ãã¡ã€ã«ãèªã¿åããã解æãããŸã
USERã¹ã¯ãªããã«æºæ ããŠããå Žåã¯ãIDBã«è¿œå ãããŸãã
次ã«ãå®è¡äžã®ãªã¹ããŒãæŽæ°ããŸã
以äžã§ãã
ã€ã³ããŒã/ãšã¯ã¹ããŒãèšå®ãããŒãããŒã¿ïŒæ倧500kbïŒãããã³ã€ã³ããŒã/ãšã¯ã¹ããŒãæ©èœãåããã¢ããªã³ã®ä»ã®å€ãã®æ©èœã§ãåãããšãè¡ããŸãã
ãŸããã€ã³ããŒãæ©èœãæåªå ãã¹ãã ãšèšããã[1]ã
確ãã«....ããã«ãããã¹ã¯ãªããäœæè ã¯æ°ããã¹ã¯ãªãããèšè¿°ããã€ã³ããŒãããŠå®è¡ãŸãã¯ãã¹ãã§ããŸããGM3-> 4ã¢ããã°ã¬ãŒãã®å Žåã¯ãèŠéããã¹ã¯ãªãããè¿œå ããŠãã ããã
ã³ãŒããšé¢æ°ã¯éåžžã«åçŽã§ã... 1æéã§å®è¡ã§ããæ°è¡ã®ã³ãŒãã
å¿
èŠã«å¿ããŠãç§ã®ã³ãŒããããŒã¹ãšããŠäœ¿çšã§ããŸãã
...ã€ã³ããŒãã¯ãŠãŒã¶ãŒãéå§ãããããç¹å¥ãªæ³šæ/ãããã¢ãã/éç¥/èŠåã¯å¿ èŠãããŸããã ... USERã¹ã¯ãªããã«æºæ ããŠããå Žåã¯ãIDBã«è¿œå ãããŸã
ããããããã«ã€ããŠã¯ããããããŸããã æšæºã®ã€ã³ã¹ããŒã«ãã€ã¢ãã°ãã¹ãããããã®ã¯ç¹ã«å¥œãã§ã¯ãããŸããã ãããã@arantiusã¯ã圌ãã¢ããªã³ã§äœãèŠãããã«ã€ããŠã®æŽå¯ãäžããããšãã§ããŸãã
ããããããã«ã€ããŠã¯ããããããŸããã æšæºã®ã€ã³ã¹ããŒã«ãã€ã¢ãã°ãã¹ãããããã®ã¯ç¹ã«å¥œãã§ã¯ãããŸããã
æšæºã®ãã€ã¢ãã°ã¯ããŠãŒã¶ãŒããªã¢ãŒããœãŒã¹ããã®ãŠãŒã¶ãŒã¹ã¯ãªããã«çŽé¢ãããšãã«äœ¿çšãããŸãã 次ã«ã確èªãã€ã¢ãã°ãå¿ èŠã§ãã
ãŠãŒã¶ãŒãã€ã³ããŒããéå§ããå ŽåïŒ
- ãŠãŒã¶ãŒã¯ããŠãŒã¶ãŒãéžæããã¹ã¯ãªããã«ç§»åããŸã
ããããããã¯ãã®æ¹æ³ã§ã¯ãããŸãã...ã€ã³ã¹ããŒã«ã¯ã³ãŒã«ããã¯ïŒ* .user.jsã§ããªã¬ãŒïŒã«ãã£ãŠè¡ãããŸã...
ããããããã¯ãã®æ¹æ³ã§ã¯ãããŸãã...ã€ã³ã¹ããŒã«ã¯ã³ãŒã«ããã¯ïŒ* .user.jsã§ããªã¬ãŒïŒã«ãã£ãŠè¡ãããŸã...
çŸåšãã¯ãã ãã ããããŒã«ã«ãã¡ã€ã«ã®ã€ã³ããŒããã¿ã³ãè¿œå ããããšã¯å¯èœã§ãã ãŸãã file://
ããã²ãŒã·ã§ã³ã«ã€ã³ã¹ããŒã«ããªãã§ãã ããã
ãããããããŸãããããŒã«ã«ãã¡ã€ã«ã®å Žåãããã¯éåžžã«é©åã§ãã ãªã¢ãŒããã¡ã€ã«çšã§ã¯ãããŸããïŒ ;-)
ããããããã¯ãã®æ¹æ³ã§ã¯ãããŸãã...ã€ã³ã¹ããŒã«ã¯ã³ãŒã«ããã¯ïŒ* .user.jsã§ããªã¬ãŒïŒã«ãã£ãŠè¡ãããŸã...
åè¿°ã®ããã«ããã¡ã€ã«å ¥åã䜿çšããæåã€ã³ããŒãã«ã€ããŠèª¬æããŠããŸã
ãããåã£ãã ããŒã«ã«ãã¡ã€ã«ã®å Žåã¯åé¡ãããŸããïŒäžèšãåç §ïŒ...
.user.jsãGreasemonkeyãŠã£ã³ããŠã«ãã©ãã°ã¢ã³ãããããããŠãã¹ã¯ãªããã®ã³ãŒããããŒãããããšã¯å¯èœã ãšæããŸããïŒ
ããã¯ééããªãFirefoxèªäœã§æ©èœããã®ã§ïŒã€ãŸããimgurã®ããã«ãã¡ã€ã«ãWebãµã€ãã«ã¢ããããŒãããããããããããŠã¡ã¬ã¢ããããŒããããã§ããŸãïŒ
ããŒã«ã«GMã¹ã¯ãªãããã€ã³ããŒãã§ããæ¹æ³ïŒäžåšçšã§ãã©ãã°ã¢ã³ãããããã§ã¯ãªãæ¹æ³ã§ãïŒã¯ãããŸããïŒ
ã¹ã¯ãªãããæçµçã«é 眮ããå¿ èŠãããã®ã¯ãæ£ç¢ºã«ã©ã®ããã£ãã·ã¥ããã£ã¬ã¯ããªã§ããã Firefoxãããã¡ã€ã«ã§ããã€ãã®ããã£ãã·ã¥ããã¡ã€ã«ãèŠã€ããŸãã
.user.jsãGreasemonkeyãŠã£ã³ããŠã«ãã©ãã°ã¢ã³ãããããããŠãã¹ã¯ãªããã®ã³ãŒããããŒãããããšã¯å¯èœã ãšæããŸããïŒ
ä»ã®ããããããã¯ã¹ãšåæ§ã«ãããã¯å¯èœã§ãïŒäŸã«ã€ããŠã¯ç§ã®IMGoolgeããã§ãã¯ããŠãã ããïŒã ãã ããè¿œå ã®ãªã¹ããŒãããã»ã¹ãå¿ èŠãšããã«ãåçŽãªãã¡ã€ã«å ¥åãæãç°¡åãªæ¹æ³ã§ãã
Mozillaã¯ããã¥ã¡ã³ããæŽæ°ããŸããïŒäžèšã®äŸã®èŠçŽïŒïŒ
https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Working_with_files
- ãã¡ã€ã«ããã«ãŒã䜿çšããŠæ¡åŒµåã®ãã¡ã€ã«ãéã
- ãã©ãã°ã¢ã³ãããããã䜿çšããŠæ¡åŒµåã®ãã¡ã€ã«ãéã
ãããå®è£ ãããšãGM3ãšåãåäœã«ãªããŸãã
ããã§ãé©åãªãªã³ã©ã€ã³ãã©ãŒã ã§æäŸãããŠããªãã¹ã¯ãªãããæåã§ã€ã³ã¹ããŒã«ããããã®å¯èœãªææ¡ã¯ãããŸããïŒ
@SamizdataçŸåšæãç°¡åãªæ¹æ³ã¯ãGMããŒã¿çïŒhttps://addons.mozilla.org/en-US/firefox/addon/greasemonkey/versions/betaïŒãå ¥æããã¢ã³ããŒã¡ãã¥ãŒãéããŠ->æ°ããã¹ã¯ãªãããäœæããããšã§ãã
ããŒã«ã«ãã¡ã€ã«ã@requireããã¹ã¯ãªãããããå Žåãããã¯é£ããæ¹æ³ã§ããå®è¡ã§ããŸããã ããšãã°ãProxomitronïŒhttp://www.proxomitron.info/files/ïŒãååŸããŠå®è¡ãããããã·127.0.0.1:8080ã䜿çšããããã«FFãæ§æãããã¡ã€ã«ãProxomitron HTMLãã©ã«ããŒã«é 眮ããŠãããFFå ã§ã httpïŒ //bweb..local.ptron/YOURFILE.user.js "ã
@kekkc ããªã¢ãŒããªãœãŒã¹ã®åé¡ãä¿®æ£ãããæ°ããããŒãžã§ã³ãAMOã«ããã·ã¥ããããšæããŸãã
也æ¯ã ããã§å®äºã§ãã
@kekkc ããªã¢ãŒããªãœãŒã¹ã®åé¡ãä¿®æ£ãããæ°ããããŒãžã§ã³ãAMOã«ããã·ã¥ããããšæããŸãã
ãŸã ..ç§ãèŠãéã
@ Sxderp ïŒ2707ãåç §ããŠããŸããïŒ
@Eselce ãã¯ãã ããã«ããã[æ°ããã¹ã¯ãªãã]ãã¿ã³ã䜿çšããŠæ°ããã¹ã¯ãªãããäœæãããã®ã¹ã¯ãªããã«@require
ã¿ã°ãé©çšãããšãã«çºçããåé¡ã解決ããå¿
èŠããããŸãã
.user.js
ãŸãã¯å¿
èŠãªã¹ã¯ãªãããããŒã«ã«ã§æäŸããã«ã¯ãããŸããŸãªå¯èœæ§ããããŸãã ãã ããæãç°¡åãªæ¹æ³ã¯ãã³ãã³ãã©ã€ã³ã§ãã®Pythonã¯ã³ã©ã€ããŒã䜿çšããããšã§ãã
Python 2.xã®å ŽåïŒ
python -m SimpleHTTPServer
Python 3.xã®å ŽåïŒ
python -m http.server
... http://127.0.0.1:8000/
ã§ãå®è¡ãããã£ã¬ã¯ããªå
ã®ãã¹ãŠã®ãã¡ã€ã«ã®æäŸãããã«éå§ããŸã
ïŒ_8000ãããã©ã«ãã®ããŒãã§ããããšã«æ³šæããŠãã ãããå€æŽã§ããŸãã以äžãåç §ããŠãã ãã_ïŒ
ããããããŒã«ã«ã®.user.js
ãé
眮ããããŒã«ã«ã®httpãµãŒããŒã«ãã¡ã€ã«ãèŠæ±ããæ¹æ³ã§ãã ç§ã¯ãããGreasemonkeyã ãã§ãªããTampermonkeyã«å¯ŸããŠãè¡ããŸãã
Pythonã¯ããã©ã«ãã§LinuxãšMacOã«ã€ã³ã¹ããŒã«ãããŸãã Windowsã䜿çšããŠããŠãWindowsãã€ã³ã¹ããŒã«ããŠããããéçºè ãšåŒã°ãç¶ããããšãèšç»ããŠããå Žåã¯ã... _çå£ã«ïŒïŒ ããªãã®äœãåé¡ã«ãªã£ãŠããŸããïŒ_ããªãã¯ããªããæ°ã¥ãå§ããããšãã§ããããã¯ããã«æ·±å»ãªåé¡ãæ±ããŠããŸãïŒ ã¬ãŒããã³ã°ïŒèïŒãŸãã¯ã³ã³ãã¥ãŒã¿ãŒã§ã¯ãªã趣å³ãšããŠç·šã¿ç©ãããããšããå§ãããŸãïŒãŠã£ã³ã¯ïŒïŒ_ã¡ãã£ãšãåè«ã§ãïŒ_ïŒ
å¥åŠãªããã°ã©ã ãã€ã³ã¹ããŒã«ããå¿ èŠã¯ãããŸãã-ããªãã¯_ã§ããŸã_ã¯_絶察ã«äžèŠ_ã§ãã Pythonã¯ãã¢ããªãã§ã¯ãªããåºæ¬çãªããã°ã©ãã³ã°èšèªã§ãã ãã ãããã®ãœãªã¥ãŒã·ã§ã³ã§ã¯Pythonãã話ããå¿ èŠãããªãã®ã§ããŸã ç·šã¿ç©ããŒã«ããããããæ¥ãã§è¡ã£ããããªãã§ãã ããã
cd
ã.user.js
ãå«ããã£ã¬ã¯ããªã«å
¥ãããããã¡ã€ã«ãèŠæ±ãããããŸãã ããšãã°ã requiredFile1.js
ãšrequiredFile2.js
ãšèšããŸã
ãã®ãã£ã¬ã¯ããªããïŒPython 2.xã®å Žåã
python -m SimpleHTTPServer
ãŸãã¯ïŒPhython 3.xã®å Žåãå®è¡ããŸã
python -m http.server
@require
è¡ã次ã®ããã«ãªã£ãŠããããšã確èªããŠãã ããã// <strong i="42">@require</strong> http://127.0.0.1:8000/requiredFile1.js
// <strong i="43">@require</strong> http://127.0.0.1:8000/requiredFile2.js
...ããã§ã requiredFile1.js
ãšrequiredFile2.js
ã¯ãæäŸããå¿
èŠã®ããããŒã«ã«ãã¡ã€ã«ã§ãã
çµããã
ããŒã«ã«ãµãŒããŒãéããã«ã¯ãpythonã³ãã³ããå®è¡ããã³ã³ãœãŒã«ã«ç§»åãã <Ctrl><C>
ãæŒããŸãã
ãŸãã-_-ãããŠãããããªãã«ãšã£ãŠã°ãããŠæçœã§ããããšãé¡ã£ãŠããŸã_--ãGreasemonkeyãŸãã¯Tampermonkeyããã¡ã€ã«ãèŠã€ããããšãã§ãããšæåŸ ããåã«PythonHTTPãµãŒããŒã³ãã³ãã©ã€ã³ãå®è¡ããããšãå¿ããªãã§ãã ãã...
ãã³ãïŒããã©ã«ãã®8000
以å€ã®ããŒãã䜿çšããå Žåã¯ã次ã®ããã«ãã³ãã³ãã«ç®çã®çªå·ïŒæå¹ãªããŒãçªå·ïŒãå
¥åããã ãã§ãã
Python 2.xã®å ŽåïŒ
python -m SimpleHTTPServer 12345
Python 3.xã®å ŽåïŒ
python -m http.server 12345
...ãããŠåœç¶ã @require
URLã8000ã§ã¯ãªããã®çªå·ã§æŽæ°ããŸãã
ããããŸãããGMããŒã«ããŒã¢ã€ã³ã³ãã¯ãªãã¯ããŠã[æ°ãããŠãŒã¶ãŒã¹ã¯ãªãã...]ãéžæãããšããŸãã
æ°ãã察å¿ããã¿ãã«ã¯ããååã®ãªãã¹ã¯ãªãã821696ããšããååãèªåçã«ä»ããããŸãã
次ã«ãããŒã«ã«ãã¡ã€ã«ã®GMã³ãŒãããã¿ããã€ã³ã«è²Œãä»ããå·Šäžã®ãä¿åãã¢ã€ã³ã³ãã¯ãªãã¯ããŸãã
ãã®ã¹ã¯ãªããã¯åŸã§ã©ãã«ãããŸããïŒ èªãïŒåŸã§ãã®ã¹ã¯ãªãããç·šéããã«ã¯ã©ãããã°ããã§ããïŒ
ã¹ã¯ãªããã®ååããfoobarããªã©ã«å€æŽããã«ã¯ã©ãããã°ããã§ããïŒ
@bsto Nameã¯ãã¹ã¯ãªãã@nameããååŸãããŸãã
ãã¹ãŠã®æ°ããã¹ã¯ãªããã¯ããæ°ãããŠãŒã¶ãŒã¹ã¯ãªãã...ãã®äžã«è¡šç€ºãããŸãã
ã¹ã¯ãªããã®ã¿ã€ãã«ãã¯ãªãã¯ããŠåé€ãŸãã¯ç·šéããã«ã¯ããµãã¡ãã¥ãŒããããŸãã
ã¯ããããããšãããããŸãã
ã¡ããã©å¥ã®è³ªåïŒ
11æ25æ¥ããŠãŒã¶ãŒkekkcã¯ã圌ã®æçš¿ïŒäžèšãåç §ïŒã§ãMozillaãïŒWinExplorerããïŒãã¡ã€ã«ããã©ãã°ã¢ã³ãããããããæ¹æ³ãæäŸãããšèªã£ãŠããŸãã
ãããã£ãŠããŠãŒã¶ãŒãã¡ã€ã«ã®ãã©ãã°ã¢ã³ããããããå¯èœã«ãªããŸãã
ç§ã¯æ£ããã§ããïŒ
GMã«å®è£ ãããã®ã¯ãã€ã§ããïŒ* .user.jsãã¡ã€ã«ã®ãã©ãã°ã¢ã³ãããããã§å©çšå¯èœïŒïŒ
FWIW file://.../anything.user.js
ãžã®ããã²ãŒã·ã§ã³ãæ€åºããåäœãããããšãã§ããããããçš®é¡ã®ãã¡ã€ã«ãã©ãŠã¶ã§UIãéãããšãã§ããããŒãžã¢ã¯ã·ã§ã³ãæ·»ä»ã§ãã/ãã¹ãã ãšæããŸãã
ããã²ãŒã·ã§ã³ã€ãã³ããæ€åºããããšã¯ã§ããŸãããã³ã³ãã³ããååŸããããšã¯ã§ããŸããïŒããããã³ã³ãã³ãã¹ã¯ãªããå ïŒ
ãã¡ã€ã«ãã©ãŠã¶ãéãããã ãã«file://
ã«ç§»åããã®ã¯ã°ãããŠãããšæããŸããïŒãã¡ã€ã«ããã«ãŒå
¥å以å€ã®ããšã¯ã§ããªããšæããŸãïŒã
ãã¡ã€ã«ãã©ãŠã¶ãéãããã ãã«fileïŒ//ã«ç§»åããã®ã¯ã°ãããŠãããšæããŸããïŒãã¡ã€ã«ããã«ãŒå ¥å以å€ã®ããšã¯ã§ããªããšæããŸãïŒã
ã¯ããæ£ç¢ºã«èšãã°ãç§ãã¡ã¯èº«åããåããŸããã ããããç§ãã¡ã¯æå³ãæ€åºããéãããç°å¢ã®äžã§å¯èœãªéã圹ç«ã€ããšãã§ããŸãã
ç§ã®2ã»ã³ã..ã
FWIW fileïŒ//.../anything.user.jsãžã®ããã²ãŒã·ã§ã³ãæ€åºã§ãã/æ€åºããå¿ èŠããããšæã
ããã²ãŒã·ã§ã³ã€ãã³ããæ€åºããããšã¯ã§ããŸãããã³ã³ãã³ããååŸããããšã¯ã§ããŸããïŒããããã³ã³ãã³ãã¹ã¯ãªããå ïŒ
Sxderpãè¿°ã¹ãããã«ãããã¯å¯èœã§ãããå°ãåä»ã§ã...
tabs.onUpdated.addListener
ããã«ïŒå¥ ....
å人çã«ã¯ãç§ãªããªã¹ããŒãè¿œå ãããbrowserActionãããã¢ããã«IMPORTãªãã·ã§ã³ãè¿œå ããã ãã§ãã
ããã«ãç§ã¯ãšã«ããGM4以æ¥.user.js
圢åŒã䜿çšããŠããŸããããããŠç§ã¯ãããåãæ®ãããå¯èœæ§ããããšæããŸãã ;ïŒ
å人çã«ã¯ããããç§ãªãããªã¹ããŒãè¿œå ãããåã«..
ãããç§ãæå³ããããšã§ãã ãã ããUIãã³ã³ãã³ãããŒãžã«æ¿å ¥ããå ŽåããããŸãã GMãç¡å¹ã«ãªã£ãŠãããšãã«ã¹ã¯ãªããã«ç§»åãããšã以åã¯æ å ±ããŒã衚瀺ãããŠããŸããã ããããããšã
ããã«ãç§ã¯ãšã«ããGM4以æ¥.user.js圢åŒã䜿çšããŠããŸããããããŠç§ã¯ãããåãæ®ãããå¯èœæ§ããããšæããŸãã ;ïŒ
ããã¯äœãæå³ããã®ã§ããããïŒ
ããã¯äœãæå³ããã®ã§ããããïŒ
GM3ã§ã¯ãã¹ã¯ãªãããGMã¹ã¯ãªãããšããŠèªèã§ããããã«ãã¹ã¯ãªããã«abc.user.js
ãšããååãä»ããå¿
èŠããããŸããã
GM4ã§ã¯ãã¹ã¯ãªããã¯IndexedDBã«ä¿åãããã¹ã¯ãªããåã¯@name
ããååŸããããããå®éã«ã¯éèŠã§ã¯ãããŸããã ãããã£ãŠãã¹ã¯ãªãããïŒã³ã³ãã¥ãŒã¿ãŒäžã§ïŒ abc.js
ïŒ .user
ãªãïŒãšããŠäœæããã³ä¿åããGMã«ã³ããŒããŠè²Œãä»ããŠããŸãã
æåã®ã€ã³ããŒãã¯ã .user
åœå圢åŒã«çžãããå¿
èŠã¯ãªããšæããŸãã
ããã«ã€ããŠäœãé²å±ã¯ãããŸããïŒ
FireMonkeyæ¡åŒµæ©èœã¯ãããè¡ãããšãã§ããŸãïŒ