NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @exclude *
// @namespace BigTSDMB
// @author BigTSDMB
// @name $LIBRARY setStyle
// ==UserLibrary==
// @name setStyle
// @description Adds (or modifies) styles of a document. Fully featured replacement for GM_addStyle.
// @license MIT
// @version 1.0
// ==/UserScript==
// ==/UserLibrary==
function setStyle(css, attributes, important) {
if (typeof attributes == 'string') { attributes = { id: attributes }; }
let style = document.getElementById(attributes?.id) || document.createElement('style');
style.textContent = css;
if (attributes) { Object.assign(style, attributes); }
if (document.documentElement) {
document.documentElement.appendChild(style);
} else {
new MutationObserver( (_, observer) => {
observer.disconnect();
document.documentElement.appendChild(style);
}).observe(document, { childList: true } );
}
if (important) { //if important, append style at the end of the document after page loads
addEventListener('load', () => { document.documentElement.appendChild(style) });
}
return style;
}