diff options
author | Krinkle <krinkle@users.mediawiki.org> | 2012-02-24 23:22:30 +0000 |
---|---|---|
committer | Krinkle <krinkle@users.mediawiki.org> | 2012-02-24 23:22:30 +0000 |
commit | 57dda2b95e0997165dcc6eba83e5aa101bd10b51 (patch) | |
tree | 31b334896d029eba81386be88be5da966fe53dee /resources/mediawiki/mediawiki.util.js | |
parent | 829e60f1bd6ff30e7e863bcaa851a1f52508bea3 (diff) | |
download | mediawikicore-57dda2b95e0997165dcc6eba83e5aa101bd10b51.tar.gz mediawikicore-57dda2b95e0997165dcc6eba83e5aa101bd10b51.zip |
[mw.loader] Refactor addInlineCSS's logic, fixing various bugs
* Using mw.util.addCSS as base to instance of bug 33305 automatically
* Expose as mw.loader.addStyleTag
* Re-use the code in mw.util.addCSS
* Drop the "text > Cdata > element > jQuery object > innerHTML", in favor of setting cssText or appending a text node (html escapement isn't a problem when working with text nodes directly).
* Appending this way also works in IE, no need for the dispose/re-create style-tag logic in the try-catch().
* Follows-up r110988 (fixme)
Notes
Notes:
http://mediawiki.org/wiki/Special:Code/MediaWiki/112370
Diffstat (limited to 'resources/mediawiki/mediawiki.util.js')
-rw-r--r-- | resources/mediawiki/mediawiki.util.js | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/resources/mediawiki/mediawiki.util.js b/resources/mediawiki/mediawiki.util.js index 277b19457cfb..6edbe5d1d7b8 100644 --- a/resources/mediawiki/mediawiki.util.js +++ b/resources/mediawiki/mediawiki.util.js @@ -149,23 +149,24 @@ }, /** - * Append a new style block to the head + * Append a new style block to the head and return the CSSStyleSheet object. + * Use .ownerNode to access the <style> element, or use mw.loader.addStyleTag. + * This function returns the styleSheet object for convience (due to cross-browsers + * difference as to where it is located). + * @example + * <code> + * var sheet = mw.util.addCSS('.foobar { display: none; }'); + * $(foo).click(function () { + * // Toggle the sheet on and off + * sheet.disabled = !sheet.disabled; + * }); + * </code> * * @param text string CSS to be appended - * @return CSSStyleSheet + * @return CSSStyleSheet (use .ownerNode to get to the <style> element) */ addCSS: function ( text ) { - var s = document.createElement( 'style' ); - s.type = 'text/css'; - s.rel = 'stylesheet'; - // Insert into document before setting cssText (bug 33305) - document.getElementsByTagName('head')[0].appendChild( s ); - if ( s.styleSheet ) { - s.styleSheet.cssText = text; // IE - } else { - // Safari sometimes borks on null - s.appendChild( document.createTextNode( String( text ) ) ); - } + var s = mw.loader.addStyleTag( text ); return s.sheet || s; }, |