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๋ก ์๋ ์
๊ทธ๋ ์ด๋๋์ด์๋ ์ ๋ฉ๋๋ค.
์ต์ ๋ฒ์ ์ค์ ์ 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๋ ์ด ๋ณด์ ๊ธฐ๋ฅ์ ๊ตฌํํ์ผ๋ฉฐ ํ์ด์ง ๋ฒ์๋ก์ ๋์ถ์ ๋ฐฉ์งํฉ๋๋ค.
@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 ๋ฌธ์ ์์ด ๋ค์ด๊ทธ๋ ์ด๋ํ ์ ์์ด์ผ ํฉ๋๋ค. ์คํฌ๋ฆฝํธ ํ์ผ์ ๋จ์ ์์ด์ผ ํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋๋ ๋น์ ์ด ์ํ๋ Greasemonkey ๋ฒ์ ์ ์ค์นํ๊ณ ์๋ ์ ๋ฐ์ดํธ๋ฅผ ๋๋๋ก ์ถ์ง๋ ฅ์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค.