์ด ํ๋ก์ ํธ์๋ CSSOM์ ๋ชจ๋ ์ง์ํ์ง ์๋ ๊ฒ์ ๋ํ ๋ฉด์ฑ
โโ์กฐํญ์ด ์๋ค๋ ๊ฒ์ ์๊ณ ์์ง๋ง HTML Inspector ๊ฐ PhatomJS ๋์ jsdom๊ณผ ํจ๊ป ์๋ํ๋๋กํ๋ ๋์ ๋ช ๊ฐ์ง ์ค๋ฅ๊ฐ ๋ฐ์ํ์ฌ CSSStyleSheet
์์์ด ๋ ์์ฑ์ด ๋ถ์กฑํ๋ค๋ ๊ฒ์ ์ถ์ ํ์ต๋๋ค
๋ด๊ฐ ์ ์ ์๋ฏ์ด level2 / style.js ์ ์๊ฑฐ๋ ์ถ๊ฐ๋์ด์ผํ๋ ๊ณณ์ด์ง๋ง ํ์คํ ์ ์์๋ ์ฝ๋๋ฒ ์ด์ค์ ์ต์ํ์ง ์์ต๋๋ค.
function evaluateStylesheet(data, sheet, baseUrl) {
// this is the element
var newStyleSheet = cssom.parse(data);
var spliceArgs = newStyleSheet.cssRules;
spliceArgs.unshift(0, sheet.cssRules.length);
Array.prototype.splice.apply(sheet.cssRules, spliceArgs);
scanForImportRules.call(this, sheet.cssRules, baseUrl);
// Add references to `this` and `baseUrl`.
sheet.href = baseUrl;
sheet.ownerNode = this;
this.ownerDocument.styleSheets.push(sheet);
}
์ด์จ๋ , ์ด๊ฒ์ ๋๋ฅผ ์ํด ๋ก์ปฌ์์ ๋ณ๊ฒฝ๋ ์์ ์ด๋ฏ๋ก ๊ทธ๋ ๊ฒ ๊ฐ๋จํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ๊ณ ๋ คํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
์ ์ก์์ต๋๋ค. ๋๋ ์ด๊ฒ์ ๋ฒ๊ทธ๋ก ํ๊ทธํ๊ณ ์กฐ๋ง๊ฐ ๋ ์์น์ ์ธ ์์ ๋ฒ์ ์ ์ป์ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
FWIW, ๊ต์ฐจ ์ถ์ฒ ์ ์ฑ
์ ๋ฐ๋ผ ๋์ผ ์ถ์ฒ๊ฐ ์๋ ์คํ์ผ ์ํธ๋ document.styleSheets
ํฌํจ๋์ง ์์ต๋๋ค. jsdom์ด ์ฒ๋ฆฌ์ค์ธ ํ์ผ์ ์ถ์ฒ๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ผ๋ฏ๋ก ์ด๊ฒ์ ๊น๋ค๋ก์ธ ์ ์์ง๋ง ์ด๋ ์ชฝ์ด๋ ๊ธฐ์ตํ ๊ฐ์น๊ฐ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์๋
ํ์ธ์
์ด ๋ฌธ์ ๋ฅผ ์ ๊ธฐํ๋ ค๊ณ ํ๋๋ฐ ownerNode๊ฐ ์ฌ์ ํ ์ง์๋์ง ์์ต๋๊น?
๊ทธ๋ด ๊ฒฝ์ฐ ์ถ๊ฐํด ๋๋ฆฌ๊ฒ ์ต๋๋ค
๊ณ ๋ง์ !
@lexoyo ๋๋ ๋ํ ์ด๊ฒ์ ํ์๋กํ๊ณ ๊ทธ๊ฒ์ ์กฐ์ฌํ๋ ค๊ณ ๋ ธ๋ ฅํด ์์ง๋ง ์ด๋ป๊ฒ ํด์ผํ ์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค ...
helpers> stylesheet.js์์ createStylesheet ()๋ฅผ ํธ์ถํ๋ HTMLStyleElement-impl.js๋ผ๋ ํ์ผ์ด ์์ผ๋ฉฐ ์ฌ๊ธฐ์๋ ๋ง์ ์ฐ๋ ๊ธฐ์ TODO๊ฐ ์์ต๋๋ค.
๋์ ์ "cssom"์ ์ฌ์ฉํด์ผํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ด๊ฒ์ ์ฐ๋ฆฌ๊ฐ ํ์๋กํ๋ ๊ฒ์ ๊ฐ์ง๊ณ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.ํ์ง๋ง ์ง๊ธ์ ์ด๋ป๊ฒํด์ผํ ์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๋ํ ์๊ฐ์ด ์์ด์ ์๊ฐ์ด ์ข ๋ ์์ผ๋ฉด ๋ ์กฐ์ฌํ๊ฒ ์ต๋๋ค. ์์ ๋ด์๋ฉด ์๋ ค์ฃผ์ธ์!
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
@lexoyo ๋๋ ๋ํ ์ด๊ฒ์ ํ์๋กํ๊ณ ๊ทธ๊ฒ์ ์กฐ์ฌํ๋ ค๊ณ ๋ ธ๋ ฅํด ์์ง๋ง ์ด๋ป๊ฒ ํด์ผํ ์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค ...
helpers> stylesheet.js์์ createStylesheet ()๋ฅผ ํธ์ถํ๋ HTMLStyleElement-impl.js๋ผ๋ ํ์ผ์ด ์์ผ๋ฉฐ ์ฌ๊ธฐ์๋ ๋ง์ ์ฐ๋ ๊ธฐ์ TODO๊ฐ ์์ต๋๋ค.
๋์ ์ "cssom"์ ์ฌ์ฉํด์ผํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ด๊ฒ์ ์ฐ๋ฆฌ๊ฐ ํ์๋กํ๋ ๊ฒ์ ๊ฐ์ง๊ณ ์๋ ๊ฒ ๊ฐ์ต๋๋ค.ํ์ง๋ง ์ง๊ธ์ ์ด๋ป๊ฒํด์ผํ ์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๋ํ ์๊ฐ์ด ์์ด์ ์๊ฐ์ด ์ข ๋ ์์ผ๋ฉด ๋ ์กฐ์ฌํ๊ฒ ์ต๋๋ค. ์์ ๋ด์๋ฉด ์๋ ค์ฃผ์ธ์!