рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рд╕рднреА CSSOM рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЕрд╕реНрд╡реАрдХрд░рдг рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ PhatomJS рдХреЗ рдмрдЬрд╛рдп jsdom рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП HTML рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░ рдкрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╕рдордп рдХреБрдЫ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рдФрд░ рдореИрдВрдиреЗ рдЗрд╕реЗ CSSStyleSheet
рдкрд░ рдЗрди рджреЛ рдЧреБрдгреЛрдВ рдХреА рдХрдореА рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЯреНрд░реИрдХ рдХрд┐рдпрд╛
рдореИрдВ рдЬреЛ рдмрддрд╛ рд╕рдХрддрд╛ рд╣реВрдВ, рдЙрд╕рд╕реЗ рд▓реЗрд╡рд▓ 2 / 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);
}
рд╡реИрд╕реЗ рднреА, рдпрд╣ рдореЗрд░реЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рд╕реНрддрд░ рдкрд░ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдЙрддрдирд╛ рд╣реА рд╕рд░рд▓ рд╣реЛрдЧрд╛ред рд╡рд┐рдЪрд╛рд░ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред
рдЕрдЪреНрдЫреА рдкрдХрдбрд╝ред рдореИрдВ рдЗрд╕реЗ рдПрдХ рдмрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдЯреИрдЧ рдХрд░реВрдВрдЧрд╛ рдФрд░ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЬрд▓реНрдж рд╣реА рдЖрдкрдХреЗ рдлрд┐рдХреНрд╕ рдХрд╛ рдПрдХ рдЕрдзрд┐рдХ рдкреНрд░рд┐рдВрдЯреЗрдб рд╕рдВрд╕реНрдХрд░рдг рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛ред
рдПрдлрдбрдмреНрд▓реНрдпреВрдЖрдИрдбрдмреНрд▓реНрдпреВ, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдХреНрд░реЙрд╕-рдСрд░рд┐рдЬрдирд▓ рдиреАрддрд┐рдпрд╛рдВ рддрдп рдХрд░рддреА рд╣реИрдВ рдХрд┐ рдЧреИрд░-рд╕рдорд╛рди-рдореВрд▓ рд╕реНрдЯрд╛рдЗрд▓рд╢реАрдЯ document.styleSheets
рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИрдВред рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ jsdom рдХрд┐рд╕ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд╛ рдореВрд▓ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдиреЗ рдпреЛрдЧреНрдп рд╣реИред
рдирдорд╕реНрдХрд╛рд░
рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╕реНрдпрд╛ рджрд░реНрдЬ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдерд╛, рдорд╛рд▓рд┐рдХрд╛рдирд╛ рд╣рдХ рдЕрднреА рднреА рд╕рдорд░реНрдерд┐рдд рдирд╣реАрдВ рд╣реИ?
рдЕрдЧрд░ рдРрд╕рд╛ рд╣реИ рддреЛ рдореБрдЭреЗ рдЗрд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреА
рдзрдиреНрдпрд╡рд╛рдж !
@lexoyo рдореБрдЭреЗ рднреА рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдкрд░ рдЧреМрд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ - рд▓реЗрдХрд┐рди рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреИрд╕реЗ ...
рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╣реИ, HTMLStyleElement-impl.js, рдЬреЛ рд╣реЗрд▓реНрдкрд╢реАрдЯ рдореЗрдВ рд╕реНрдЯрд╛рдЗрд▓рд╢реАрдЯ () рдХреЛ createStylesheet () рдХреЙрд▓ рдХрд░рддреА рд╣реИред рдпрд╣рд╛рдБ рдХрдЪрд░рд╛ рдФрд░ TODO рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реИред
рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп "cssom" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ (рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ) рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП - рд▓реЗрдХрд┐рди, рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рдХрд┐ рдЗрд╕ рд╕рдордп рдХреИрд╕реЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореЗрд░реЗ рдкрд╛рд╕ рдЕрдзрд┐рдХ рд╕рдордп рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЖрдЧреЗ рдХреА рдЬрд╛рдВрдЪ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдореБрдЭреЗ рдХреБрдЫ рдФрд░ рд╕рдордп рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ!
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
@lexoyo рдореБрдЭреЗ рднреА рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЗрд╕ рдкрд░ рдЧреМрд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ - рд▓реЗрдХрд┐рди рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреИрд╕реЗ ...
рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╣реИ, HTMLStyleElement-impl.js, рдЬреЛ рд╣реЗрд▓реНрдкрд╢реАрдЯ рдореЗрдВ рд╕реНрдЯрд╛рдЗрд▓рд╢реАрдЯ () рдХреЛ createStylesheet () рдХреЙрд▓ рдХрд░рддреА рд╣реИред рдпрд╣рд╛рдБ рдХрдЪрд░рд╛ рдФрд░ TODO рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реИред
рдпрд╣ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп "cssom" рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреЛ (рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ) рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП - рд▓реЗрдХрд┐рди, рдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рдХрд┐ рдЗрд╕ рд╕рдордп рдХреИрд╕реЗред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдореЗрд░реЗ рдкрд╛рд╕ рдЕрдзрд┐рдХ рд╕рдордп рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЖрдЧреЗ рдХреА рдЬрд╛рдВрдЪ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдореБрдЭреЗ рдХреБрдЫ рдФрд░ рд╕рдордп рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддреЗ рд╣реИрдВ, рддреЛ рдХреГрдкрдпрд╛ рдореБрдЭреЗ рдмрддрд╛рдПрдВ!