æ¥å¹Žã¯WebExtensionsãç»å ŽããXUL / XPCOMã¯æçµçã«éæšå¥šã«ãªããããäœã¬ãã«APIã®äœ¿çšãå¿ èŠãªå Žæã«å¶éããããã®äœæ¥ãè¡ããšããã§ãããã
次ã®æé ã圹ç«ã€ãšæããŸãã
ã»ãšãã©ã®äœæ¥ã¯æ®µéçã«è¡ãããšãã§ãããšæããŸãã
ãå€ããAPIã®è¡šé¢ãããã€ãã®éèŠãªéšåã«çž®å°ãããããMozillaã®æ åœè ã«WebExtensionsã®ä»£æ¿åãæäŸããããã«æ瀺ã§ããŸãã
ç§ã¯ããã«ã€ããŠããããèããŠããŸããã æ確ãªã決å®ãã¯ãããŸããããããã€ãã®ãã€ã³ãããããŸãã
ãã¶ã€ã³ããã¥ã¡ã³ãããå§ããã®ã¯çŽ æŽãããã¢ã€ãã¢ã§ãã åºæ¬çã«ãGreasemonkeyã¯ãã¹ãŠæ§é åããããã«ãèšç»å€ã®ææ©çã«æé·ããæ¹æ³ã§ã¯ãªããè¯ãæ¹æ³ã®èšç»ã«ååšããããããã¹ãŠããªããŒã¹ãšã³ãžãã¢ãªã³ã°ããå¿ èŠããããŸãã
ããšãã°ãServices.ppmmãš.cpmmã¯åªããã·ã§ãŒãã«ããã§ãããæåããä¿¡é Œã§ããã°ããã£ãã®ã§ãããç§ãã¡ãïŒè²¬ä»»ãæã£ãŠïŒå§ãããšãã«ã¯ååšããŠããŸããã§ããã
ç§ã¯ç¢ºãã«ãŸã WebExtensionsã®äœ¿çšãæå±ããŠããŸããã圌ãã¯GMã®ãããªãã®ã®ããã«æªçãªæ¹æ³ã§ã
å®éã«æåããæžãçŽãå¿ èŠã¯ãããŸããããã©ã®ã³ãŒããä¿æããã©ã®ã³ãŒããåé€ããããæ éã«æ€èšããå¿ èŠãããå ŽåããããŸãã
ããŒãããŸããç§ã¯ãããäž»ã«ãã¯ãããžãŒã®èŠç¹ããèŠãŠããŸããã çŸåšãUIã¯å ±æChromeç°å¢ã§XULãªãŒããŒã¬ã€ãšçŽæ¥ã¹ã¯ãªããå®è¡ã䜿çšããŠããŸãã
ãããã£ãŠãç©äºãHTMLã«å€æãããããããç¬ç«ãããŠã£ã³ããŠã³ã³ããã¹ãã§å®è¡ããã¡ãã»ãŒãžããã·ã³ã°ãä»ããŠã®ã¿éä¿¡ããããšã¯ãç©äºãå°æ¥è¡ãããããšã«ãªã£ãŠããæ¹æ³ã®ããã§ãã
ã¡ãã»ãŒãžãããŒãžã£ã¯åºæ¬çã«ããããå®è£ ãããŠããæäœã¬ãã«ã§ãã ããé«ãã¬ãã«ã®æœè±¡åã¯ãã®äžã«æ§ç¯ãããŸãã WebChannel.jsm / BroadcasstChannel / MessageChannel / WebExtensionãã£ãã«ãªã©ã
ãã¶ã€ã³ããã¥ã¡ã³ãããå§ããã®ã¯çŽ æŽãããã¢ã€ãã¢ã§ãã
GH wikiã¯ãã®ããã®é©åãªå Žæã§ããããïŒ å ±åäœæ¥ãç°¡åã«ããããã«ãç·šéæã«éç¥ãè¡ããŸããïŒ
ç§ãã¡ã¯äž»ã«æ©èœ/å éšé 管ãªã¹ããšãããããã¯ãªãŒã³ãªæ¹æ³ã§å®è£ ããæ¹æ³ãå¿ èŠã ãšæããŸãã
ãã®åé¡ã®ãããã¯ã«èå³ãããå Žåã¯ã以äžããèªã¿ãã ããã
https://groups.google.com/d/topic/greasemonkey-dev/K6IyDUWnTQc/discussion
ããããšãïŒ
https://developer.mozilla.org/en-US/docs/Web/API/File_and_Directory_Entries_API/Introduction
ããã¯éåžžã«èå³æ·±ãAPIã§ãããããã®æ©èœã¯éæšæºã§ãããæšæºãã©ãã¯ã«ã¯ãããŸããããšäºææ§ã¯éåžžã«å¶éãããŠããŸãã
ãã«æ©èœã®Greasemonkey-under-WebExtensionsãèšèšããæè¿ã®ç§ã®è©Šã¿ïŒïŒ2483ãïŒ2484ãåç §ïŒã¯ãã¹ãŠã€ã©ã€ã©ããŠããŸãã ç§ã¯ãããé²æ©çãªéçºã¹ã¿ã€ã«ãæ€èšãå§ããŠããŸããããéå®ãããæ©èœã®ã»ãããéžæããããã ãããµããŒãããŸãã å°ã䟿å©ã«ãªã£ãŠãããåŸã§ããå€ãã®æ©èœãžã®éãèŠã€ããŠãã ããã
3.xã®ã€ã³ã¹ããŒã«ã調ã¹ããšãïŒç§ã«ãšã£ãŠã¯ïŒãã¹ãŠã®ã¹ã¯ãªããã<strong i="6">@grant</strong> none
ã§ããããšãããããŸãã 27ã®ãã¡ã @run-at document-start
䜿çšããŠããã®ã¯6ã€ã ãã§ããããµããŒããããŠããªãå Žåããããã®ã»ãšãã©ã¯å°ãªããšãããçšåºŠæ£åžžã«æ©èœããŸãã @require
æ©èœã¯é »ç¹ã«äœ¿çšããã @resource
ããªã䜿çšãããŸãã
ãããã£ãŠãããã¯æåã«ç®æãã¹ãé©åãªç®æšã®ããã«æãããŸãã <strong i="12">@grant</strong> none
ã¢ãŒãã§ãã¬ãŒã³ãŠãŒã¶ãŒã¹ã¯ãªããããµããŒããã GM_
APIã¯ãµããŒãããŸããã @require
ãµããŒãããŸãã ã©ãããããããããããéå¹ççã«@resource
ããµããŒãããããšæã£ãŠããŸãã
ïŒç§ã¯ãããå¿ãç¶ããŠããã®ã§æ³šæããŠãã ããïŒãšã©ãŒãå°ãèªã¿ãããããããã«sourceURLã䜿çšããããšãèšç»ããŠãã ãããè€æ°ã®sourceURLããµããŒããããŠãããã©ããããŸãã¯@require
èæ
®ããŠsourceMapãçæããå¿
èŠããããã©ããã調ã¹ãŠãã ããïŒã§ããŸããïŒïŒ
WebExtensionã®ãã®ã«å ããŠãã¬ãŒã³ãªWebAPIã«ã¢ã¯ã»ã¹ã§ããã®ã§ã次ã®ããã«ãªããŸãã
https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API
ïŒ WebExtensionã®IndexedDBã®ã¹ãã¬ãŒãžå¶éã¯ã©ã®ãããã§ããïŒ ããã¯storage.local
ãããã¯ããã«åªãããªãã·ã§ã³ã®ããã«èŠããŸãã ã€ã³ã¿ãŒãã§ãŒã¹ã¯æãåçŽã§ã¯ãããŸããããã¹ã¯ãªãããçžäºã«åé¢ããéžæçãªèªã¿åããè¡ãããã®ãã匷åãªæ©èœãæäŸããŸãã ç§ãæãã«ã ããã¥ã¡ã³ããæã䜿ãããããã®ã§ã¯ãããŸããã
https://github.com/mdn/webextensions-examples/pull/171ã«ã¯ãIndexedDBã«é¢ãã貎éãªè°è«ãšäŸãããããã§ãã
ç§ã¯ããã€ãã®é²æ©ãéããŸããã
https://github.com/arantius/greasemonkey/tree/webbymonkeyïŒ88d53b4c67b7825858405eb2591f27c8487ce413 ïŒ
ãŒãããåå®è£
ã ãã§ãã¯ã¢ãŠããã about:debugging
ã[äžæã¢ããªã³ã®èªã¿èŸŒã¿]ãæŒããŠãã«ãŒãã®å Žæããä»»æã®ãã¡ã€ã«ãéžæããŸãã ãŠãŒã¶ãŒã¹ã¯ãªãããã€ã³ã¹ããŒã«ããŠãã»ãšãã©å®è¡ããããšã¯ã§ããŸããã 絶察ã«ä»ã®æ©èœã¯ãŸã ãããŸããã ïŒãŸããç¿ã®ã¡ãã¥ãŒããããŸãããããã¯èŠãç®ãOKã§ãã以å€ã¯äœãããªã空ã®åœç©ã§ããïŒãã®ããããªæ©èœã»ããã§ãããã³ãŒãã®åšãã«ããããã®TODOãæ£ãã°ã£ãŠããŸãã ãããããå€ãã®æ©èœãžã®ãæ£ããéãã§ãããã©ãããä¿èšŒããããšã¯ã§ããŸããã
å€ãããŒãžã§ã³ã®TampermonkeyãšViolentmonkeyã¯ãªãŒãã³ãœãŒã¹ãªã®ã§ãWebExtensionsã¯Chromium Extensionsã«äŒŒãŠããã®ã§ããã®ã³ãŒãã®äžéšãããã§äœ¿çšã§ããŸããïŒ
ç·šéïŒå®éããããèŠããšãå€ãTampermonkeyãšã®ã©ã€ã»ã³ã¹ã®äºææ§ã«ã€ããŠã¯ããããããŸããã ãã ããViolentmonkeyã¯MITã©ã€ã»ã³ã¹ã§ãããããäºææ§ããããŸãã
@PorygonZRocks ïŒViolentmonkeyãGreasemonkeyã«ãªããŸããïŒ
ç§ã¯ã³ãŒãã£ã³ã°ã®çµéšãããŸããããŸããããå°ãªããšãäœããå®è£ ããããã®ã¬ã€ãã©ã€ã³ããããšæã£ãŠããŸããã ç¹°ãè¿ããŸãããããŸãçµéšããªã/ç¥èããªãã®ã§ãç§ã¯ééã£ãŠãããããããŸããã
FF56ããã«ãããã»ã¹ãšäºææ§ã®ãªããã¹ãŠã®ã¢ããªã³ãç¡å¹ã«ãããããæéãå€æŽããå¿ èŠãããå Žåãããããšã«æ³šæããŠãã ããã
ç§ã®éçºãã©ã³ããåç §ããŠãã ããã ããã¯ããªãã©ãã§ãããæ©èœã¯æå°éã§ãã ããã¯è¡ãããŠããã®ã§ããã®åºç¯å²ã«ãããåé¡ã§ç¹ã«è¿œè·¡ãããã®ã¯ãããŸããã
@arantius奜å¥å¿ãããæ°ããã³ãŒããæžããŠããã®ã§ããããããšãå€ãã³ãŒããåå©çšããŠããã®ã§ããïŒ
äœãæäŒããŸããããïŒ
ããšãã°ã奜å¥å¿ããããparse-meta-line.jsãã®ç®çã¯åã«ã¡ã¿ããŒã¿ããªããžã§ã¯ãã«è§£æããããšã§ããïŒ
@arantius奜å¥å¿ãããæ°ããã³ãŒããæžããŠããã®ã§ããããããšãå€ãã³ãŒããåå©çšããŠããã®ã§ããïŒ
ã»ãšãã©æ°ããã ãã€/ã©ãã§åœ¹ç«ã€ããã³ããŒããŸãã ïŒãããŸã§ã®ãšãããã¹ã¯ãªããã®è§£æã¯å€§ããªäŸã§ããïŒ
äœãæäŒããŸããããïŒ
ãã«ããããã§ãããã 調æŽã¯é£ããã§ãããã
ããšãã°ã奜å¥å¿ããããparse-meta-line.jsãã®ç®çã¯åã«ã¡ã¿ããŒã¿ããªããžã§ã¯ãã«è§£æããããšã§ããïŒ
ãã®äžè¡ãã¯ãã
ãã®äžè¡ãã¯ãã
ã€ãŸãããããã®éã®ã¡ã¿ããŒã¿ã解æãã以å€ã«äœããè¡ãã®ã§ããããã
// ==UserScript==
....
// ==/UserScript==
ãããå¯äžã®ç®çã§ããå Žåãããã¯å€ãã®ã³ãŒãã®ããã«æããŸãã
ã¯ããããã¯ãããããããšã§ãã çæãããã³ãŒãã§ãã ãã®ãã£ã¹ã«ãã·ã§ã³ãhttps://groups.google.com/d/topic/greasemonkey-devã«è¡ã£ãŠãã ããã
ç§ã¯Googleã°ã«ãŒãã䜿çšããŠããŸãã:(
ãããããç§ã ã£ãã...ç§ã¯ããããéãããæ¹ãããã§ãããã
ã°ãŒã°ã«ã°ã«ãŒãã¯ããååšããŸããã
æªããªã³ã¯ïŒ https ïŒ//groups.google.com/forum/#ïŒforum / greasemonkey -dev
ãããæ£ããå Žæã§ãããã©ããã¯å®å
šã«ã¯ããããŸãããããšã«ããããã«ãããŸãã å¥ã®åé¡@arantiusãéããŠã»ããå Žåã¯ã確ãã«ã
4.0.0ã¯æ¢åã®ã¹ã¯ãªããã移è¡ããããšã«ãªã£ãŠããã®ã§ã¯ãããŸãããïŒ ã¢ã«ãã¡3ïŒææ°ã®éããŒã¿çïŒã«æŽæ°ããŸããããã¹ã¯ãªããããããªãããšã«æ°ã¥ããŸããã
@ Phyxion ã3.14ãã€ã³ã¹ããŒã«ããå Žåã¯ãã¹ã¯ãªããã移è¡ããå¿ èŠããããŸãã ã€ã³ã¹ããŒã«åŸãå¿ ããã©ãŠã¶ãåèµ·åããŠãã ããã
ãã®åŸã4.xãã€ã³ã¹ããŒã«ãããšãã¹ã¯ãªãããäœæãããŸãã ããã§ãªãå Žåã¯ãæ°ããå·ã®è©³çŽ°ãªè€è£œæé ã圹ç«ã¡ãŸãã
Greasemonkey 4alphaã¯Firefox57ãšäºææ§ããããŸããã
@erkinalp ã
@Sxderpãããšãç§ã®ãã·ã³ã§ãããåçŸããã®ã¯ç°¡åã§ãã 3.14ã10åã®ãŠãŒã¶ãŒã¹ã¯ãªãããšãšãã«ã€ã³ã¹ããŒã«ããŸããã AMOã«ç§»åããææ°ã®ã¢ã«ãã¡çãããŠã³ããŒãããŸãã æ±ãããããåèµ·åããŸãã 次ã«ããŠãŒã¶ãŒã¹ã¯ãªãããã€ã³ã¹ããŒã«ãããŠããªãããšã瀺ããŸãã ãããåçŸããã®ã«ã©ãã»ã©åœ¹ç«ã€ãããããŸããã
ç§ã¯ãŸã ããããã¹ãããŠããŸããããGM4ã¯ã¢ã³ã€ã³ã¹ããŒã«åŸã«æ§æã倱ãã¯ãã§ãä¿æããã¯ããªã®ã§ãè©ŠããŠã¿ãããšããå§ãããŸãã
ããã¯åœ¹ã«ç«ã¡ãŸããïŒ
ãããã¬ãã«ã®åŸ æ©ïŒã€ãŸãããã¹ãŠãéåæé¢æ°ã§ã©ããããïŒã¯ãå°æ¥ã®å®è£ ãå¶éããããïŒããšãã°ããµã³ãããã¯ã¹ãåãæ»ãå Žåãå°æ¥ã®ã¬ã«ã ãååŸããå ŽåïŒãèšèšäžã®éžæãšããŠã¯é©åã§ã¯ãªããšæããŸãã ããã«ããããããã¬ãã«ã®åŸ æ©ãå©çšã§ãããã¹ã¯ãªããããããã¬ãã«ã§å®è¡ãããããã©JSã®å®è¡ãšççŸããããšã«ãªããŸãã
@arantius
ããã«ã¯ãŸã äœããããŸãã:(
ãšããã§ã4.0ã¯æ¬¡ã®ããã«ãªã£ãŠããã¯ãã§ãïŒ https ïŒ
ã¹ã¯ãªãããè¿œå ããããã®ãã¿ã³ãªã©ã¯ãããŸããã
...ãã¹ãŠãéåæé¢æ°ã§ã©ããããŸã..ã
çŸåšå©çšå¯èœãªãã®ã䜿çšããŠãã¹ã³ãŒãã®ç®çã§é¢æ°ãã©ããããå¿ èŠããããŸãã ç§ã¯ãããéåæã«ããªãããã«ããªãã®çç±ãè²·ããšæããŸãã ïŒå°ãªããšããã¹ã¯ãªããèªäœã«éåæã©ãããŒé¢æ°ãè¿œå ããã®ã¯ç°¡åã§ããïŒ
ãããããã¯äž»ã«async / awaitã«é¢ãããã®ã§ãããããã¯ãçŸåšjavascriptã§
@arantiusãªãå察祚ãæããã®ã§ããïŒ
@arantiusã¯2017幎ã«ã³ã¡ã³ãããŸãã28. 14:57 CEST ïŒ
...ãã¹ãŠãéåæé¢æ°ã§ã©ããããŸã..ã
çŸåšå©çšå¯èœãªãã®ã䜿çšããŠãã¹ã³ãŒãã®ç®çã§é¢æ°ãã©ããããå¿ èŠããããŸãã ç§ã¯ãããéåæã«ããªãããã«ããªãã®çç±ãè²·ããšæããŸãã ïŒå°ãªããšããã¹ã¯ãªããèªäœã«éåæã©ãããŒé¢æ°ãè¿œå ããã®ã¯ç°¡åã§ããïŒ
[mozillaãããã¡ã€ã«] \ storage \ default \ã®ã³ã³ãã³ããåé€ããŠã¿ãŠãã ããïŒããã¯ã¢ããåŸïŒ
ãã®åŸãåè©Šè¡ããŠãã ããã
UserScriptãªããžã§ã¯ããšèšãã°ã3ã€ã®UserScriptã¯ã©ã¹ãæã€ããã®èšèšäžã®æ±ºå®ãå®å šã«ã¯ç解ããŠããŸããã çŸæç¹ã§ã¯ã圌ãã¯å°ãã°ãããŠããåäžã®ç¶æ¿ããªãŒãæã£ãŠããŸãã
ããã«ãRemoteUserScriptã¯1åã ã䜿çšããããã®ããã«IDã
æ å ±ã®ããã ãã«..ã
ç§ã¯FF57.0a1ã䜿çšããŠãããã¬ã¬ã·ãŒã¢ããªã³ãšGM3.13ãå®è¡ããŠããŸã
æ®å¿µãªãããæ倧ããŒãžã§ã³ã56ã«èšå®ãããŠãããããæŽæ°ïŒ3.14ã3.15ïŒãååŸã§ããŸããã*
ãã ããæåã§ã€ã³ã¹ããŒã«ããããšãã§ããŸãã
GM 3.16ã¯ãèµ·åæã«ãã©ãŠã¶ããã³ã°ãããŸãïŒDBãæŽæ°ããŠãããšæããŸãïŒ
æãåèã«ãªãã³ã¡ã³ã
ç§ã¯ããã€ãã®é²æ©ãéããŸããã
https://github.com/arantius/greasemonkey/tree/webbymonkeyïŒ88d53b4c67b7825858405eb2591f27c8487ce413 ïŒ
ãŒãããåå®è£ ã ãã§ãã¯ã¢ãŠããã
about:debugging
ã[äžæã¢ããªã³ã®èªã¿èŸŒã¿]ãæŒããŠãã«ãŒãã®å Žæããä»»æã®ãã¡ã€ã«ãéžæããŸãã ãŠãŒã¶ãŒã¹ã¯ãªãããã€ã³ã¹ããŒã«ããŠãã»ãšãã©å®è¡ããããšã¯ã§ããŸããã 絶察ã«ä»ã®æ©èœã¯ãŸã ãããŸããã ïŒãŸããç¿ã®ã¡ãã¥ãŒããããŸãããããã¯èŠãç®ãOKã§ãã以å€ã¯äœãããªã空ã®åœç©ã§ããïŒãã®ããããªæ©èœã»ããã§ãããã³ãŒãã®åšãã«ããããã®TODOãæ£ãã°ã£ãŠããŸãã ãããããå€ãã®æ©èœãžã®ãæ£ããéãã§ãããã©ãããä¿èšŒããããšã¯ã§ããŸããã