aboutsummaryrefslogtreecommitdiffstats
path: root/resources/mediawiki/mediawiki.util.js
diff options
context:
space:
mode:
authorKrinkle <krinkle@users.mediawiki.org>2012-02-24 23:22:30 +0000
committerKrinkle <krinkle@users.mediawiki.org>2012-02-24 23:22:30 +0000
commit57dda2b95e0997165dcc6eba83e5aa101bd10b51 (patch)
tree31b334896d029eba81386be88be5da966fe53dee /resources/mediawiki/mediawiki.util.js
parent829e60f1bd6ff30e7e863bcaa851a1f52508bea3 (diff)
downloadmediawikicore-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.js27
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;
},