ํ์ฌ ์คํฌ๋ฆฝํ ์คํ์ผ์ ๋ถ์กฑ์ ์ค์ ๋ก ์์ ํ ์ฌ์์ ๋๋ค :-(
addStyle
๋ 12์ค์ ๊ฐ๋จํ ์ฝ๋ ๋ก ์คํฌ๋ฆฝํธ์ ์ฝ๊ฒ ๋ณต์ฌํ์ฌ ๋ถ์ฌ๋ฃ์ ์ ์์ต๋๋ค. ๋๋ ์ด ์ค์ด ํ์ํ์ง ์๊ธฐ ๋๋ฌธ์ 11์ผ ์๋ ์์ต๋๋ค.
style.setAttribute('type', 'text/css');
๊ฐ์ฌ ํด์ !
๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ํ์ฌ์ ๋ถ์กฑ์ ๋์ฑ ์ดํดํ ์ ์๊ฒ ๋ง๋ญ๋๋ค ...
@arantius CSP๊ฐ ์๊ณ ์๋ณธ์ผ๋ก "self"๋ฅผ ํ์ฉํ์ง ์๋ ํ์ด์ง์์ ์ฌ์ฉ์ ์คํ์ผ์ ๋ก๋ํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์ด์ <style>
์์๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค. GM์ tabs.insertCSS()
( ref )๋ฅผ ํธ์ถํ๋ API๋ฅผ ๋
ธ์ถํ์ฌ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค. ์๊ฐ?
CSP๊ฐ ์๊ณ ์๋ณธ์ผ๋ก "self"๋ฅผ ํ์ฉํ์ง ์๋ ํ์ด์ง์์ ์ฌ์ฉ์ ์คํ์ผ์ ๋ก๋ํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๊ทธ๋์ ๊ทธ๋ฅ ์ถ๊ฐํ ์ ์์ต๋๋ค.
๋ฌธ์ ๊ฐ ๋ฐ์ํ ๊ณณ๋ถํฐ Stylish์ ๋ํ ๋ฒ๊ทธ ๋ฅผ ์ ์ถํ์ต๋๋ค. ๊ทธ๋๋ GM์ ํ์ฌ API๋ ์ผ๋ถ ์ฝํ ์ธ ์คํฌ๋ฆฝํธ ์ ํ ๋๋ ๊ธฐํ๋ฅผ ์ฐํํ๋ ๊ถํ ์๋ WebExt API๋ฅผ ๋๋ถ๋ถ ๋ ธ์ถํ๊ณ insertCSS๊ฐ ๊ทธ ์ค ํ๋์ด๊ธฐ ๋๋ฌธ์ ์ฌ๊ธฐ์์ ๊ณ ๋ คํ ๊ฐ์น๊ฐ ์๋ค๊ณ ์๊ฐํ์ต๋๋ค.
์ฐ๊ฒฐ๋ ๋ฒ๊ทธ์์ "CSS๋ฅผ ํ์ฅ์ ๋ฒ๋ค๋ก ๋ฌถ์ผ๋ฉด ์๋ํด์ผ ํฉ๋๋ค..."๊ฐ ์ ํํ ๋ฌด์์ ์๋ฏธํ๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๋์ ๋ ธ๋ ์ฝ์ ์ด ์๋ํ์ง ์์ ์ ์์ต๋๋ค.
CSP ์์ ๊ธฐ๋ฅ์ ๊ณ ๋ คํ๊ธฐ ์ํด ๋ค์ ์ด๊ฒ ์ต๋๋ค. (ํ์ง๋ง ์ ๋ง ๋ฎ์ ์ฐ์ ์์์์...)
์์น์ ์ผ๋ก ์ด๊ฒ์ ๋ฉ์์ง๋ฅผ ๋ฐฑ๊ทธ๋ผ์ด๋ ์คํฌ๋ฆฝํธ์ ์ ๋ฌํ๊ณ tabs.insertCSS๋ฅผ ์คํํ์ฌ FF๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ๊ตฌํํ ์๋ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ผ๋จ ํด๋น ๋ฒ๊ทธ๊ฐ ๊ตฌํ๋๋ฉด ์ด๋ฌํ ๊ณ ๋ฆฌ๋ฅผ ๋ฐ์ด ๋์ ํ์๊ฐ ์์ต๋๋ค.
@arantius 1415352 ๋ "์ด๊ฒ์ HTML style
์์ฑ๊ณผ HTML <style>
๋
ธ๋์ ๋ด์ฉ ๋ชจ๋์ ์ ์ฉ๋์ด์ผ ํฉ๋๋ค."๋ผ๊ณ ๋งํฉ๋๋ค.
GM.addStyle
๋ฅผ ์ถ๊ฐํ ๊ณํ์ด ์๋ ๊ฒฝ์ฐ(CSP ๋ฌธ์ ๊ฐ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ํด๊ฒฐ๋๋ฉด ์ ์๊ฒ ๋งค์ฐ ์ข์ต๋๋ค), ์ด ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ ์ ์์ ์ด ๋์ ๋ ๊ฐ๋ฆฌํฌ ์ ์์). ๊ทธ๊ฒ์ ๋ช
๋ฐฑํด ๋ณด์ผ ์ ์์ง๋ง ๊ทธ๊ฒ์ ๋๋ฅผ ์ํ ๊ฒ์ด ์๋๋๋ค(์ด ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํ์ง ๋ชปํ๋ค๋ฉด ์ง๊ธ ์คํฌ๋ฆฝํธ๋ฅผ ์์ ํ๋ ๋์ ๊ธฐ๋ฅ์ด ๋ค์ ๊ตฌํ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ ์ ์์ต๋๋ค).
๊ฐ์ฌ ํด์!
ํด๋ฆฌํ ๊ด๋ จ: GM_addStyle์ด ๋๋ง ์์ ์๋ค๋ ์์์ ๋ค์ ์ดํ๋ก ์ ๋ ์ค์ ๋ก 3๊ฐ์ง ๋ช ๋ น๋ง ์ฌ์ฉํ์ฌ ๊ต์ฒดํ์ต๋๋ค. HEAD๋ฅผ ํ ์คํธํ๋ ๋์ ๋ฌธ์ ์์ ์์๋ ํญ์ ์กด์ฌํ๋ documentElement์ STYLE์ ์ง์ ์ถ๊ฐํฉ๋๋ค.
var style = document.createElement('style'); var style.textContent = `
<Stylesheet here>
`; document.documentElement.appendChild(style);
๋ค์์ ๋ด๊ฐ ๋ ๋๋ฌผ๊ฒ ์ฌ์ฉํ๋ ํจ์ ๋ฒ์ ์ผ๋ก 5์ค์์ ์๋ํฉ๋๋ค.
addStyle = function (css) {
var style = document.createElement('style');
style.textContent = css;
document.documentElement.appendChild(style);
return style; //optional, but convenient for changing the styling later.
};
ํ์ค์ด ์๋์๋ ๋ถ๊ตฌํ๊ณ Firefox์ GM 3 ๋ฐ 4์ Chrome์ TamperMonkey์์ ๋ฌธ์ ์์ด ํ ์คํธํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ HEAD๊ฐ ์์ง ๋ก๋๋์ง ์์ ๊ฒฝ์ฐ ์คํจํ๋ ๊ฒ๋ณด๋ค ๋นํ์ค์ ์ ํธํฉ๋๋ค(๋๋๊ฒ ์์ฃผ ๋ฐ์ํฉ๋๋ค. ๋ถ๋ง์ด ์์์ต๋๋ค.)
๋๋ ๋ํ UserStyles,org๊ฐ ์๋์ผ๋ก ์์ฑ๋ ์ฌ์ฉ์ ์คํฌ๋ฆฝํธ์ ๋์ฒด ์๋จ์ผ๋ก ๋ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค๋ ์ ์ ์ฃผ๋ชฉํฉ๋๋ค.
HEAD๋ฅผ ํ ์คํธํ๋ ๋์ ๋ฌธ์ ์์ ์์๋ ํญ์ ์กด์ฌํ๋ documentElement์ STYLE์ ์ง์ ์ถ๊ฐํฉ๋๋ค.
FF57 ๋ฐ GM4์์ documentElement๋ ์ ์ด๋ ๋ด ์ปดํจํฐ์์๋ ๋ฌธ์ ์์ ์ ํญ์ ์ฌ์ฉํ ์ ์๋ ๊ฒ์ ์๋๋๋ค .
GM 4(ํ์ฌ๋ก์๋) ๋ฌธ์ ์์์ด ์ด์ ๋ณด๋ค ๋ฆ๊ฒ ์ผ์ด๋๊ธฐ ๋๋ฌธ์ ์ ๋
๊ทธ๊ฒ์ด ์ด๋ป๊ฒ ๊ฐ๋ฅํ์ง ํ์คํ์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ documentElement๊ฐ ์์ผ๋ฉด
documentElement๊ฐ
HTML ์์. ์ด๊ฒ์ HEAD ์์๋ฅผ ํฌํจํ๋ ๊ฒ์
๋๋ค. ๊ทธ๋์ ๋ด ๋ฐฉ๋ฒ์
๋ ๋๋น .
๋ค๋ฅธ ๊ฒ์ ์ฌ์ฉํ๋ Fx 59์์ ์ต์ ๊ฐ๋ฐ์ ํ
์คํธํ์ง ์์์์ ์ธ์ ํฉ๋๋ค.
๋ฌธ์ ์์์ ์ป๋ ๋ฐฉ๋ฒ์ด์ง๋ง documentElement๊ฐ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ๋ง์ฝ์
๊ทธ๋ ์ง ์์ผ๋ฉด ๋ชจ๋ ์ข
๋ฅ์ ์คํฌ๋ฆฝํธ๊ฐ ์ค๋จ๋ฉ๋๋ค. ๋น์ ์ ์๋ฌด๊ฒ๋ ํ ์ ์์ต๋๋ค
documentElement๊ฐ ์๊ธฐ ์ ์ ๋ฌธ์. ๋๋ ๋น์ ์ด ์ค์ ํ ์ ์๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค
๋์ฐ๋ณ์ด ๊ด์ฐฐ์.
๋ฌธ์ ์์๊ฐ
๋ชจ๋ ์ฝํ
์ธ ์คํฌ๋ฆฝํธ๊ฐ ์ฃผ์
๋ฉ๋๋ค.
2017๋ 12์ 26์ผ ํ์์ผ ์คํ 6์ 26๋ถ์ CoolCmd [email protected]์์ ๋ค์๊ณผ ๊ฐ์ด ์ผ์ต๋๋ค.
HEAD๋ฅผ ํ ์คํธํ๋ ๋์ STYLE์ ์ง์ ์ถ๊ฐํฉ๋๋ค.
๋ฌธ์ ์์ ์์๋ ํญ์ ์กด์ฌํ๋ documentElement.
FF57 ๋ฐ GM4์์ documentElement๋ฅผ ํญ์ ์ฌ์ฉํ ์ ์๋ ๊ฒ์ ์๋๋๋ค.
๋ฌธ์ ์์, ์ ์ด๋ ๋ด ์ปดํจํฐ์์๋.โ
๋น์ ์ด ๋๊ธ์ ๋ฌ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ฐ๋ ๊ฒ์ ๋๋ค.
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ณ GitHub์์ ํ์ธํ์ธ์.
https://github.com/greasemonkey/greasemonkey/issues/2724#issuecomment-354028964 ,
๋๋ ์ค๋ ๋ ์์๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AFNSrmb5eKj-nY9vnR3d94bq5kIjaz9Tks5tEY7PgaJpZM4QnG03
.
๋์ฐ๋ณ์ด ๊ด์ฐฐ์๋ฅผ ์ค์ ํ ์ ์๋ค๊ณ ์๊ฐํ์ง๋ ์์ต๋๋ค.
document
์ ๋์ฐ๋ณ์ด ๊ด์ฐฐ์๋ฅผ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๊ฐ์ฌ ํด์ !
๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ํ์ฌ์ ๋ถ์กฑ์ ๋์ฑ ์ดํดํ ์ ์๊ฒ ๋ง๋ญ๋๋ค ...