Greasemonkey: GM.registerMenuCommand ์žฌ๊ณ (ํด๋ฆฌํ•„์€ ์‚ฌ๋ผ์ง€๋Š” API์— ๋”ฐ๋ผ ๋‹ค๋ฆ„)

์— ๋งŒ๋“  2020๋…„ 04์›” 29์ผ  ยท  7์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: greasemonkey/greasemonkey

๋‹ค๋ฅธ ๋ธŒ๋ผ์šฐ์ € ์—”์ง„์ด ๊ทธ๊ฒƒ์„ ์ง€์›ํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— Firefox๋Š” ํ•œ๋™์•ˆ ํด๋ฆฌํ•„์˜ registerMenuCommand ๋ถ€๋ถ„์ด ์˜์กดํ•˜๋Š” ์ปจํ…์ŠคํŠธ ๋ฉ”๋‰ด ์ˆ˜์ • ๊ธฐ๋Šฅ์„ ์ œ๊ฑฐํ•˜๋Š” ๊ณต๊ฐœ ๋ฒ„๊ทธ ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์ด์ œ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๊ทธ๊ฒƒ์„ "๊ณ ์ •"(์ฆ‰, ์ง€์› ์ œ๊ฑฐ)ํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์œผ๋ฏ€๋กœ GM4๊ฐ€ ์ด์— ๋Œ€ํ•œ ์ž์ฒด ์ง€์›์„ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ์žฌ๊ณ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์ ์ ˆํ•œ ๋Œ€์ฒด๊ฐ€ ์ œ๊ณต๋˜์ง€ ์•Š์œผ๋ฉด GreaseMonkey์— ๋Œ€ํ•œ ์ง€์›์„ ์ค‘๋‹จํ•˜๊ณ  ๊ธฐ์ˆ ์ ์ธ ์ด์œ ๋กœ ViolentMoney ๋ฐ TamperMonkey๋งŒ ์ง€์›ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์‚ฌ์šฉ์ž์—๊ฒŒ ์ง€์‹œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. "ํ•œ ๋ฒˆ ์„ค์ •ํ•˜๊ณ  ๊ฑฐ์˜ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š”" ๊ตฌ์„ฑ UI ๋ฒ„ํŠผ์œผ๋กœ ์‚ฌ์ดํŠธ๋ฅผ ์–ด์ง€๋Ÿฝํžˆ๋Š” UX๋Š” ํ—ˆ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  7 ๋Œ“๊ธ€

+1
๋‚˜๋Š” HTML 5 ์ปจํ…์ŠคํŠธ ๋ฉ”๋‰ด๋ฅผ ๋งŽ์ด ์ข‹์•„ํ•˜์ง€๋งŒ, ์‚ฌ๋ผ์ง€๋ฉด GM.registerMenuCommand๊ฐ€ ๋‹ค์‹œ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ๋‹ค์ค‘ ์‚ฌ์ดํŠธ ์‚ฌ์šฉ์ž ์Šคํฌ๋ฆฝํŠธ์— ๋Œ€ํ•œ ๋‹ค๋ฅธ ์ˆ˜์ œ ์†”๋ฃจ์…˜์„ ์œ ์ง€ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์€ UI/API์— ๋Œ€ํ•œ ์ œ์•ˆ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์›์ˆญ์ด ๋ฉ”๋‰ด์— ๋“ฑ๋กํ•ด์•ผ ํ•  ๊ฒƒ ๊ฐ™์€๋ฐ์š”?

๊ทธ๊ฒƒ์ด TamperMonkey์™€ ViolentMonkey๊ฐ€ ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์˜ต์…˜์€ browser.menus.create ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  userscript ๋“ฑ๋ก ๋ฉ”๋‰ด ํ•ญ๋ชฉ์„ ์ปจํ…์ŠคํŠธ ๋ฉ”๋‰ด์˜ ํ•˜์œ„ ๋ฉ”๋‰ด์— ๋ฐ€์–ด๋„ฃ๋Š” ํด๋ฆฌํ•„์˜ ๊ธฐ๋Šฅ์„ ๊ทผ์‚ฌํ™”ํ•˜๋Š” ๊ฐ€๋Šฅ์„ฑ์„ ํƒ์ƒ‰ํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ƒํ™ฉ์— ๋งž๋Š” ๋ฉ”๋‰ด๋ฅผ ๊ธฐ๋Œ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ƒํ™ฉ์— ๋งž๊ฒŒ ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ• ์—†์ด ์ตœ์ ์ž…๋‹ˆ๋‹ค.

(๊ทธ๋ฆฌ๊ณ  ์ด์ƒ์ ์œผ๋กœ๋Š” Firefox์˜ ์• ๋“œ์˜จ ๊ด€๋ฆฌ์ž๊ฐ€ ์ž‘๋™ํ•˜๋Š” ๋ฐฉ์‹๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ์ปจํ…์ŠคํŠธ ๋ฉ”๋‰ด๊ฐ€ ์•„๋‹Œ ์›์ˆญ์ด ๋ฉ”๋‰ด์— "์ด ์‚ฌ์šฉ์ž ์Šคํฌ๋ฆฝํŠธ ๊ตฌ์„ฑ" ํ•ญ๋ชฉ์„ ๋„ฃ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.)

ํ›„์ž๋Š” ์‹ค์ œ๋กœ "์‹คํ–‰ ๊ฐ€๋Šฅ์„ฑ ํƒ์ƒ‰"์ž…๋‹ˆ๋‹ค. WebExtensions API๋ฅผ ์ฐ”๋Ÿฌ๋ณธ ์ง€ ๋„ˆ๋ฌด ์˜ค๋ž˜๋˜์–ด ๊ทธ ์ ์—์„œ ํ•œ๊ณ„๊ฐ€ ๊ธฐ์–ต๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. (์ €๋Š” ์‚ฌ์šฉ์ž ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋” ์ด์‹ ๊ฐ€๋Šฅํ•˜๊ณ  ํ•„์ˆ˜ ํ™•์žฅ ์„œ๋ช…์— ๋ฐ˜๋Œ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.)

๋‹ค์Œ์€ ์ด์ „ ์Šค๋ ˆ๋“œ์ž…๋‹ˆ๋‹ค.
https://github.com/greasemonkey/greasemonkey/issues/2714

@arantius

์›์ˆญ์ด ๋ฉ”๋‰ด์— ๋“ฑ๋กํ•ด์•ผ ํ•  ๊ฒƒ ๊ฐ™์€๋ฐ์š”?

์ปจํ…์ŠคํŠธ ๋ฉ”๋‰ด๊ฐ€ ์‚ฌ์–‘์—์„œ ํ๊ธฐ๋˜์ง€ ์•Š์•˜๋”๋ผ๋„ GM_registerMenuCommand ๋Œ€์‹  ์‚ฌ์šฉํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํ•ญ์ƒ ๋ธŒ๋ผ์šฐ์ €์˜ ์ปจํ…์ŠคํŠธ ๋ฉ”๋‰ด์— ์‚ฝ์ž…๋˜์–ด ํƒ์ƒ‰์„ ๋ฐฉํ•ดํ•ฉ๋‹ˆ๋‹ค.
  • ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ์ปจํ…์ŠคํŠธ(์›น ํŽ˜์ด์ง€ ์ชฝ์˜ DOM)์— ์‚ฝ์ž…๋˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ์ธ ์ •๋ณด ๋ฐ ๋ณด์•ˆ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ปจํ…์ŠคํŠธ ๋ฉ”๋‰ด๊ฐ€ ์›น ํŽ˜์ด์ง€ ์ธก์—์„œ ์ฐจ๋‹จ๋œ ๊ฒฝ์šฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

Firefox ํŠธ๋ ํฌ๋Š” Firefox 85์˜ ๋ชฉํ‘œ ๋ฆด๋ฆฌ์Šค ๋งˆ์ผ์Šคํ†ค๊ณผ ํ•จ๊ป˜ <menuitem> ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ํŒจ์น˜๋ฅผ ์ถœ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค.

https://bugzilla.mozilla.org/show_bug.cgi?id=1680596#c11

(๊ตฌ์ฒด์ ์œผ๋กœ๋Š” ๊ธฐ๋ณธ๊ฐ’์ด false์ธ dom.menuitem.enabled pref ๋’ค์— ๋„ฃ์Šต๋‹ˆ๋‹ค.)

@arantius GM.registerMenuCommand() ๊ตฌํ˜„์ด ์‹œ๊ธ‰ํ•œ ๋ฌธ์ œ๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด API๋Š” Violemntmonkey์™€ Tampermonkey๋Š” ๋ฌผ๋ก  Greasemonkey 3.x์—์„œ๋„ ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ๊ต์ฒดํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ํ˜ธํ™˜์„ฑ์— ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

https://github.com/greasemonkey/greasemonkey/pull/2770 ์—…๋ฐ์ดํŠธ์—์„œ ๊ตฌํ˜„์— ๋Œ€ํ•œ ๋ชจ๋“  ์ด์ „ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์™œ ๋ณ‘ํ•ฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๊นŒ?

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰