рдХреНрдпреЛрдВрдХрд┐ рдХрд┐рд╕реА рдЕрдиреНрдп рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЗрдВрдЬрди рдиреЗ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдЬрд╣рдордд рдирд╣реАрдВ рдЙрдард╛рдИ, рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдХреЗ рдкрд╛рд╕ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП, рд╕рдВрджрд░реНрдн рдореЗрдиреВ рд╕рдВрд╢реЛрдзрди рдХреНрд╖рдорддрд╛ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЦреБрд▓рд╛ рдмрдЧ рдерд╛, рдЬрд┐рд╕ рдкрд░ рдкреЙрд▓реАрдлрд╝рд┐рд▓ рдХрд╛ registerMenuCommand рднрд╛рдЧ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред
рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рдЕрдм рдЗрд╕реЗ "рдирд┐рд╢реНрдЪрд┐рдд" (рдЕрд░реНрдерд╛рдд рд╕рдорд░реНрдерди рдХреЛ рд╣рдЯрд╛рдиреЗ) рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╢рд╛рдпрдж рдЬреАрдПрдо 4 рдкрд░ рдкреБрдирд░реНрд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реЛрдЧрд╛ рдЬреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рд╕рдорд░реНрдерди рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред
рдореИрдВ рдЕрдкрдиреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди UI рдХреЛ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рдЬреИрд╕реА рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдкрд░реНрдпрд╛рдкреНрдд рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдпрджрд┐ рдХреЛрдИ рдЙрдкрдпреБрдХреНрдд рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдХреЗрд╡рд▓ GreaseMonkey рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЫреЛрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдирд┐рд░реНрджреЗрд╢ рджреЗрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рддрдХрдиреАрдХреА рдХрд╛рд░рдгреЛрдВ рд╕реЗ, рдореИрдВ рдХреЗрд╡рд▓ ViolentMoney рдФрд░ TamperMonkey рдХрд╛ рд╕рдорд░реНрдерди рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореИрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ "рдЗрд╕реЗ рдПрдХ рдмрд╛рд░ рд╕реЗрдЯ рдХрд░реЗрдВ рдФрд░ рд▓рдЧрднрдЧ рдЗрд╕реЗ рдХрднреА рдирд╣реАрдВ рдмрджрд▓реЗрдВ" рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди UI рдмрдЯрди рдХреЗ рд╕рд╛рде рд╕рд╛рдЗрдЯ рдХреЛ рдЕрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡реАрдХрд╛рд░реНрдп UX рдХреЛ рдирд╣реАрдВ рдорд╛рдирддрд╛ред
+1
рдореБрдЭреЗ рдПрдЪрдЯреАрдПрдордПрд▓ 5 рд╕рдВрджрд░реНрдн рдореЗрдиреВ рдмрд╣реБрдд рдкрд╕рдВрдж рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╡реЗ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рддреЛ рдореБрдЭреЗ рднреА GM.registerMenuCommand рд╡рд╛рдкрд╕ рдЖрдиреЗ рдХреА рдЙрдореНрдореАрдж рд╣реИред рдореИрдВ рдЦреБрдж рдХреЛ рдорд▓реНрдЯреА-рд╕рд╛рдЗрдЯ рдпреВрдЬрд░рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рд╣реЛрдордореЗрдб рд╕реЙрд▓реНрдпреВрд╢рди рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реБрдП рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддрд╛ред
UI/API рдХреЗ рд▓рд┐рдП рдХреЛрдИ рд╕реБрдЭрд╛рд╡ рдЬреЛ рдЕрднреА рднреА рдореМрдЬреВрдж рд░рд╣реЗрдЧрд╛ рдЬрд┐рд╕рдХрд╛ рдЖрдк рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ?
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдмрдВрджрд░ рдореЗрдиреВ рдореЗрдВ рдЪреАрдЬреЛрдВ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рд╣реЛрдВрдЧреЗ?
рдЗрд╕ рддрд░рд╣ рд╕реЗ TamperMonkey рдФрд░ ViolentMonkey рдХрд░рддреЗ рд╣реИрдВред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдиреЗ рдХреА рд╡реНрдпрд╡рд╣рд╛рд░реНрдпрддрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрдЧрд╛ рдХрд┐ рдкреЙрд▓реАрдлрд╝рд┐рд▓ browser.menus.create
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдкрдВрдЬреАрдХреГрдд рдореЗрдиреВ рдЖрдЗрдЯрдо рдХреЛ рд╕рдВрджрд░реНрдн рдореЗрдиреВ рдХреЗ рд╕рдмрдореЗрдиреВ рдореЗрдВ рдзрдХреЗрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ ... рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╡рд╣ рдЙрдк- рдЙрдиреНрд╣реЗрдВ рд╕рдВрджрд░реНрднреЛрдВ рдХреЗ рджрд╛рдпрд░реЗ рдореЗрдВ рд▓рд╛рдиреЗ рдХреЗ рдХрд┐рд╕реА рддрд░реАрдХреЗ рдХреЗ рдмрд┐рдирд╛ рдЗрд╖реНрдЯрддрдо рдХреНрдпреЛрдВрдХрд┐ рд▓реЛрдЧ рдЖрдорддреМрд░ рдкрд░ рд╕рдВрджрд░реНрдн рдореЗрдиреВ рдХреЗ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реЛрдиреЗ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВред
(рдФрд░, рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ, рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдХреЗ рдПрдбрдСрди рдореИрдиреЗрдЬрд░ рдХреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд╕рдорд╛рди, рд╕рдВрджрд░реНрдн рдореЗрдиреВ рдХреЗ рдмрдЬрд╛рдп рдмрдВрджрд░ рдореЗрдиреВ рдореЗрдВ "рдЗрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ" рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЛ рд░рдЦрдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реЛрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред)
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдмрд╛рдж рд╡рд╛рд▓рд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ "рд╡реНрдпрд╡рд╣рд╛рд░реНрдпрддрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ" рд╣реИред рдЬрдм рд╕реЗ рдореИрдВрдиреЗ WebExtensions API рдкрд░ рдкреЛрдХ рдХрд┐рдпрд╛ рд╣реИ рддрдм рд╕реЗ рдпрд╣ рдЗрддрдирд╛ рд▓рдВрдмрд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдЙрд╕ рд╕рдВрдмрдВрдз рдореЗрдВ рдЗрд╕рдХреА рд╕реАрдорд╛рдПрдВ рдпрд╛рдж рдирд╣реАрдВ рд╣реИрдВред (рдореИрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдЕрдзрд┐рдХ рдкреЛрд░реНрдЯреЗрдмрд▓ рд╣реИрдВ рдФрд░ рдЕрдирд┐рд╡рд╛рд░реНрдп рд╡рд┐рд╕реНрддрд╛рд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХреЗ рд╡рд┐рд░реЛрдз рдореЗрдВ рд╣реИрдВред)
рдпрд╣рд╛рдБ рдПрдХ рдкреБрд░рд╛рдирд╛ рдзрд╛рдЧрд╛ рд╣реИ:
https://github.com/greasemonkey/greasmonkey/issues/2714
@arantius
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдмрдВрджрд░ рдореЗрдиреВ рдореЗрдВ рдЪреАрдЬреЛрдВ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рд╣реЛрдВрдЧреЗ?
рднрд▓реЗ рд╣реА рд╕рдВрджрд░реНрдн рдореЗрдиреВ рдХреЛ рд╡рд┐рдирд┐рд░реНрджреЗрд╢ рд╕реЗ рдЕрдкреНрд░рдЪрд▓рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛ, GM_registerMenuCommand рдХреЗ рд╕реНрдерд╛рди рдкрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдиреБрдХрд╕рд╛рди рд╣реЛрддреЗ рд╣реИрдВ:
рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдЯреНрд░рдВрдХ рдиреЗ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ 85 рдХреЗ рд▓рдХреНрд╖реНрдп рд░рд┐рд▓реАрдЬрд╝ рдореАрд▓ рдХреЗ рдкрддреНрдерд░ рдХреЗ рд╕рд╛рде <menuitem>
рддрдХ рдкрд╣реБрдВрдЪ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреИрдЪ рдЙрддрд░рд╛ред
https://bugzilla.mozilla.org/show_bug.cgi?id=1680596#c11
(рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдпрд╣ рдЗрд╕реЗ dom.menuitem.enabled
рдкреНрд░реАрдлрд╝ рдХреЗ рдкреАрдЫреЗ рд░рдЦрддрд╛ рд╣реИ рдЬреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЧрд▓рдд рд╣реИред)
@arantius GM.registerMenuCommand() рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдПрдХ рдЬрд░реВрд░реА рдореБрджреНрджрд╛ рдмрди рдЧрдпрд╛ред
рдпрд╣ рдПрдкреАрдЖрдИ Violemntmonkey рдФрд░ Tampermonkey, рд╕рд╛рде рд╣реА Greasemonkey 3.x рджреЛрдиреЛрдВ рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рдХрд┐рд╕реА рдЕрдиреНрдп рддрд░реАрдХреЗ рд╕реЗ рдмрджрд▓реА рдирд╣реАрдВ рдЬрд╛ рд╕рдХрддреА рд╣реИ, рдФрд░ рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред
рдореИрдВрдиреЗ https://github.com/greasmonkey/greasmonkey/pull/2770 рдЕрджреНрдпрддрди рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рднреА рдкрд┐рдЫрд▓реА рдЪрд┐рдВрддрд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рд╣реИред рдЙрд╕рдХрд╛ рд╡рд┐рд▓рдп рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛?