Greasemonkey: Firefox < FF57(์˜ˆ: FF56 ๋ฐ 52ESR)์€ Greasemonkey 4๋กœ ์ž๋™ "์—…๊ทธ๋ ˆ์ด๋“œ"๋˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2017๋…„ 12์›” 13์ผ  ยท  13์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: greasemonkey/greasemonkey

GM 4.1์˜ strict_min_version ๋Š” 52.0 ์ž…๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ๋ ˆ๊ฑฐ์‹œ ํ™•์žฅ(์˜ˆ: FF56 ๋ฐ 52ESR)์„ ์ง€์›ํ•˜๋Š” Firefox ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์ด 4.1๋กœ "์—…๊ทธ๋ ˆ์ด๋“œ"๋ฉ๋‹ˆ๋‹ค. FF 52ESR์„ ์‚ฌ์šฉ ์ค‘์ด๊ฑฐ๋‚˜ FF55/56์„ ๊ณ„์† ์‚ฌ์šฉํ•˜๋Š” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๋ ˆ๊ฑฐ์‹œ ํ™•์žฅ์„ ๊ณ„์† ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์ฒด์ ์œผ๋กœ ๊ทธ๋ ‡๊ฒŒ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Greasemonkey์˜ ๋ ˆ๊ฑฐ์‹œ ๋ฒ„์ „์€ 4.x ๋ฒ„์ „๋ณด๋‹ค ํ›จ์”ฌ ๋” ๊ธฐ๋Šฅ์ ์ด๋ฉฐ ์•ž์œผ๋กœ๋„ ๊ทธ๋Ÿด ๊ฒƒ์ž…๋‹ˆ๋‹ค. Firefox < FF57 ๋ฒ„์ „์„ ์‹คํ–‰ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์€ Greasemonkey 4.x๋กœ ์ž๋™ "์—…๊ทธ๋ ˆ์ด๋“œ"๋˜์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ manifest.json ์—๋Š” ๋‹ค์Œ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

"strict_min_version": "57.0"

์‚ฌ์šฉ์ž๋Š” GM์˜ ์ž๋™ ์—…๋ฐ์ดํŠธ ๋˜๋Š” ์ผ๋ฐ˜์ ์ธ ํ™•์žฅ ๊ธฐ๋Šฅ์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋„๋ก ์„ ํƒํ•  ์ˆ˜ ์žˆ์ง€๋งŒ(์˜ˆ: ์ด strict_min_version ์„ค์ •์€ ํ”„๋กœํ•„๋ณ„๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Œ) GM4๋Š” ์‹ค์ œ๋กœ "์—…๊ทธ๋ ˆ์ด๋“œ"๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ์šฉ์ž๋Š” ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œ๋กœ ๊ฐ„์ฃผํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์‚ฌ์šฉ ์ค‘์ธ Firefox ๋ฒ„์ „์—์„œ ๋ ˆ๊ฑฐ์‹œ ํ™•์žฅ์— ๋Œ€ํ•œ ์ง€์›์ด ๋ถ€์กฑํ•˜์—ฌ GM4๋ฅผ ์‚ฌ์šฉํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž๋Š” GM4๋กœ ์ž๋™ ์—…๊ทธ๋ ˆ์ด๋“œ๋˜์–ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋‚˜๋Š” ๋‹น์‹ ์ด ์›ํ•˜๋Š” Greasemonkey ๋ฒ„์ „์„ ์„ค์น˜ํ•˜๊ณ  ์ž๋™ ์—…๋ฐ์ดํŠธ๋ฅผ ๋„๋„๋ก ์ถ”์ง„๋ ฅ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

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

์ตœ์†Œ ๋ฒ„์ „ ์„ค์ •์€ 3.x ๋ฒ„์ „์— ์Šคํฌ๋ฆฝํŠธ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์„ ์šฉ์ดํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด WebExtension์ด ๋‚ด์žฅ๋˜์–ด ์žˆ๋˜ ๊ธฐ๊ฐ„์˜ ์•„ํ‹ฐํŒฉํŠธ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์„ ๋‚ฎ์ถ”์ง€ ์•Š๊ณ  ๋‚˜๋Š” ์• ๋“œ์˜จ์ด ์ œ๋Œ€๋กœ ์„ค์น˜๋  ๊ฒƒ์ด๋ผ๊ณ  ๋ฏฟ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

4.1์€ ๋” ๋‚ฎ์€ ์ตœ์†Œ ๋ฒ„์ „์ธ _oops?_๋กœ ํ‘ธ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์ด ์‚ฌ๋žŒ๋“ค์„ 4.x๋กœ '๊ณ ์˜๋กœ ๊ฐ•์ œ'ํ•˜๊ธฐ ์œ„ํ•ด ํ–‰ํ•ด์ง„ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉฐ, ๊ฒŒ์‹œ๋ฌผ์˜ ์ ๋Œ€๊ฐ์€ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@Sxderp ์ ๋Œ€๊ฐ์„ ์˜๋„ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ๋“ค๋ ธ๋‹ค๋‹ˆ ์œ ๊ฐ์ž…๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์“ด ๊ฒƒ์„ ๋‹ค์‹œ ์ฝ์–ด๋„ ์–ด๋–ค ๋ถ€๋ถ„์ด ์ ๋Œ€์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋Š”์ง€ ์™„์ „ํžˆ ํ™•์‹ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‚˜๋Š” ๋‹น์‹ ์ด (๋ถ€๋ถ„์ ์œผ๋กœ) ๋‹น์‹ ์ด ๋ถˆ์พŒํ•˜๋‹ค๊ณ  ๋Š๊ผˆ๋˜ ๊ฒƒ์„ ์ถ”์ธกํ•˜์—ฌ ๊ทธ๊ฒƒ์„ ํŽธ์ง‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚ด๊ฐ€ "๊ฐ•์ œ"(์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฐœ์ƒํ•˜๋Š” ์ผ์— ๋Œ€ํ•œ ์„ค๋ช…์œผ๋กœ๋งŒ ์˜๋„ํ•œ ๊ฒƒ์ž„)๋ผ๊ณ  ๋งํ–ˆ์ง€๋งŒ "์˜๋„์ ์œผ๋กœ ๊ฐ•์ œ"๋ผ๊ณ  ๋งํ•˜์ง€๋Š” ์•Š์•˜์Šต๋‹ˆ๋‹ค(์ด๋Š” ๋‚ด๊ฐ€ ์„ค์ • ๋’ค์— ์–ด๋–ค ์˜๋„๊ฐ€ ์žˆ๋‹ค๊ณ  ํ‘œ์‹œํ–ˆ์Œ์„ ๋‚˜ํƒ€๋ƒˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜๋ ค๊ณ  ํ•˜์ง€ ์•Š์Œ). [๋‹น์‹ ์€ ๋‚ด๊ฐ€ ๋‚˜ ์ž์‹ ์„ ์ถ”์ธกํ•˜๊ฒŒ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์ œ๊ฐ€ '๊ณ ์˜๋กœ ๊ฐ•์š”ํ•˜๋‹ค'๋ผ๊ณ  ๋งํ•œ ๊ฑด ์•„๋‹ˆ์ง€๋งŒ, ์ง€๊ธˆ์€ ์›๋Œ“๊ธ€์„ ์ˆ˜์ •ํ•ด์„œ 100% ํ™•์ธํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๊ธ€ ์ž‘์„ฑ์ž๋กœ์„œ ๋‚ด์šฉ์ด ๋‹ด๊ธด ์ด๋ฉ”์ผ์„ ๋ฐ›์ง€ ๋ชปํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ๋žฌ๋‹ค๋ฉด ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. ์˜๋„ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.]

์ฐธ๊ณ : WebExtensions ์ „์šฉ์œผ๋กœ์˜ ์ „ํ™˜์„ ๋‘˜๋Ÿฌ์‹ธ๊ณ  Mozilla์— ๋Œ€ํ•ด ๋ถ€์ •์ ์ธ ๊ฐ์ •์„ ๊ฐ€์ง€๊ณ  ์žˆ์ง€๋งŒ GM๊ณผ ๊ด€๋ จ๋œ ์‚ฌ๋žŒ๋“ค์€ Mozilla๊ฐ€ ๋ฐฐ์น˜ํ•œ ์ƒํ™ฉ์„ ์ž˜ ์ฒ˜๋ฆฌํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ์™„์ „ํžˆ Mozilla์˜ ์ž˜๋ชป์œผ๋กœ ํ™•์žฅ ์ž‘์„ฑ์ž๋ฅผ ๋น„๋‚œํ•˜๋Š” ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์„ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

๋„ค, ์ €๋Š” v56์—์„œ ์ œ FF๋ฅผ "๊ณ ์ •"ํ–ˆ๊ณ  ์ด์ œ GM4.1์—์„œ๋Š” ๋งค์šฐ ๊ฐ„๋‹จํ•œ ์Šคํฌ๋ฆฝํŠธ์—์„œ "Error: Permission denied to access property "nodeType"" ์™€ ๊ฐ™์€ ๋ชจํ˜ธํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ชจํ˜ธํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ์ž ์Šคํฌ๋ฆฝํŠธ๋Š” '์ฝ˜ํ…์ธ  ์Šคํฌ๋ฆฝํŠธ' ์ปจํ…์ŠคํŠธ์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ๊ฐœ์ฒด/ํ•จ์ˆ˜๊ฐ€ ์ด ์ปจํ…์ŠคํŠธ์—์„œ ์„ ์–ธ๋œ ๊ฒฝ์šฐ ์ฐฝ์—์„œ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๊ธฐ ์ „์— ์ฐฝ์— ๋ณต์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Mozilla๋Š” ์ด ๋ณด์•ˆ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ–ˆ์œผ๋ฉฐ ํŽ˜์ด์ง€ ๋ฒ”์œ„๋กœ์˜ ๋ˆ„์ถœ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Content_scripts#Sharing_content_script_objects_with_page_scripts

@Sxderp ๋„ค, ์—…๋ฐ์ดํŠธ ๋…ธํŠธ์—์„œ unsafeWindow ๊ฐ€ ์–ด๋–ป๊ฒŒ๋“  ๋‹ค๋ฅด๊ฒŒ ์ž‘๋™ํ•˜๊ณ  exportFunction() or cloneInto() ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๊ณ  ๋‹น์‹ ์ด ํ–ˆ๋˜ ๊ฒƒ๊ณผ ๊ฐ™์€ ๊ธฐ์‚ฌ๋ฅผ ๋งํฌํ•œ๋‹ค๋Š” ๋‚ด์šฉ์„ ์ด๋ฏธ ์ฝ์—ˆ์Šต๋‹ˆ๋‹ค(์‚ฌ์šฉ์ž ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์•„๋‹Œ ํ™•์žฅ์„ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค )). ์•„๋ฌด๋„ ์‚ฌ์šฉ์ž ์Šคํฌ๋ฆฝํŠธ์—์„œ ์‹ค์ œ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์˜ˆ๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ์š”์ ์„ ๋ฒ—์–ด๋‚œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์š”์ ์€ FF<=56์ด ์ด ์ „์ฒด ์ง€์—ฐ์„ ๊ฒช์ง€ ์•Š์œผ๋ฏ€๋กœ ๊ฐ•์ œํ•  ์ด์œ ๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์•„๋ฌด๋„ ์‚ฌ์šฉ์ž ์Šคํฌ๋ฆฝํŠธ์—์„œ ์‹ค์ œ๋กœ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์˜ˆ๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ฑฐ์˜ ๋˜‘๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€ '์ฝ˜ํ…์ธ  ์Šคํฌ๋ฆฝํŠธ'๋ผ๊ณ  ๋งํ•˜๋ฉด '์‚ฌ์šฉ์ž ์Šคํฌ๋ฆฝํŠธ'๋กœ ๋ฐ”๊พธ์‹ญ์‹œ์˜ค. ์ •์ƒ์ ์œผ๋กœ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์—ฌ๊ธฐ ์— ๋‚ด๊ฐ€ ์–ผ๋งˆ ์ „์— ๊ฒŒ์‹œํ•œ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ window.eval() ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋‚ด๋ณด๋‚ด๊ธฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ํ•„์š” ์—†์ด ์ธ์ˆ˜๊ฐ€ ํŽ˜์ด์ง€ ๋ฒ”์œ„์—์„œ ์ง์ ‘ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

๊ฐ์‚ฌ. eval() - eval์€ ์‚ฌ์•…ํ•˜๊ณ  eval์„ ์‚ฌ์šฉํ•˜๋Š” ์ฒซ ๋ฒˆ์งธ ๊ทœ์น™์€ "eval์„ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค"์ž…๋‹ˆ๋‹ค.

@Spown IMO, exportFunction() ๋ฐ cloneInto() ๋Š” Firefox ์ „์šฉ์ด๋ฏ€๋กœ ํ”ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์Šคํฌ๋ฆฝํŠธ์™€ WebExtensions์˜ ์ค‘์š”ํ•œ ์ด์ ์€ ๋‹ค์–‘ํ•œ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํŽ˜์ด์ง€ ์ปจํ…์ŠคํŠธ์—์„œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์Šคํฌ๋ฆฝํŠธ์™€ ์ฝ˜ํ…์ธ  ์Šคํฌ๋ฆฝํŠธ ๋ชจ๋‘์—์„œ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ์‹์€ ํ•จ์ˆ˜ executeInPage() ์ž…๋‹ˆ๋‹ค. ์ด ๋‹ต๋ณ€์€ Stack Overflow ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜ธ์ถœํ•˜๋Š” ํ•จ์ˆ˜์— ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜์—ฌ ํ•ด๋‹น ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ํŽ˜์ด์ง€ ์ปจํ…์ŠคํŠธ์— ๋ณต์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฐฝ ์ปจํ…์ŠคํŠธ์—์„œ ๋ณ€์ˆ˜์— ์ „๋‹ฌ๋œ ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’(์˜ˆ: window[variableName] )์„ ํ• ๋‹นํ•˜๋Š” ๊ฐ„๋‹จํ•œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด cloneInto() ๊ฐ€ ํ•˜๋Š” ์ผ์„ ์‰ฝ๊ฒŒ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Object , Array , function , RegExp , Date ๋งŒ ์ฒ˜๋ฆฌํ•˜๋ฏ€๋กœ cloneInto() ๋งŒํผ ์œ ์—ฐํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฐ/๋˜๋Š” ๊ธฐํƒ€ ๊ธฐ๋ณธ ์š”์†Œ( Boolean , null , undefined, Number ๋ฐ String , Symbol ์ œ์™ธ).

@Sxderp ์ด ๋ชจ๋“  ๊ฒƒ์ด ์‚ฌ์‹ค์ผ ์ˆ˜ ์žˆ์ง€๋งŒ FF>56์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜์ง€ ์•Š์Œ์œผ๋กœ์จ ์ด ๋ชจ๋“  ๊ฒƒ์— ์ฐธ์—ฌํ•˜์ง€ ์•Š๊ธฐ๋กœ ์„ ํƒํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ €๋Š” ๋ณ„๋กœ ๊ฐœ์˜์น˜ โ€‹โ€‹์•Š์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๊ฒฝ์šฐ์ฒ˜๋Ÿผ ์—ฌ์ „ํžˆ ์Šค๋ฉฐ๋“ญ๋‹ˆ๋‹ค.

BTW, ๊ท€ํ•˜์˜ ์˜ˆ์ œ์—์„œ์™€ ๊ฐ™์ด ๋‚ด ์Šคํฌ๋ฆฝํŠธ์—์„œ ํŽ˜์ด์ง€์˜ jQuery๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•˜๋ฉด(์•ž์„œ ์–ธ๊ธ‰ํ•œ ์˜ค๋ฅ˜๋ฅผ ๋ฐ˜ํ™˜ํ•จ) ์—ฌ์ „ํžˆ ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. NVM

๋‚˜๋Š” ๋‹น์‹ ์ด ์›ํ•˜๋Š” Greasemonkey ๋ฒ„์ „์„ ์„ค์น˜ํ•˜๊ณ  ์ž๋™ ์—…๋ฐ์ดํŠธ๋ฅผ ๋„๋„๋ก ์ถ”์ง„๋ ฅ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

Greasemonkey 4๋กœ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๋ฉด Greasemonkey 3๋ฅผ ์„ค์น˜ํ•˜์—ฌ ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œํ•˜๊ณ  ์›ํ•˜๋Š” ๊ฒฝ์šฐ ๊ณ„์† ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด Greasemonkey 4๊ฐ€ ๋Œ์ดํ‚ฌ ์ˆ˜ ์—†๋Š” ๋ณ€๊ฒฝ์„ ๊ฐ€ํ•ฉ๋‹ˆ๊นŒ?

@garyking ๋ฌธ์ œ ์—†์ด ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์€ ๋‚จ์•„ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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