(function($){ var patterns = { text: /^['"]?(.+?)["']?$/, url: /^url\(["']?(.+?)['"]?\)$/ }; function clean(content) { if(content && content.length) { var text = content.match(patterns.text)[1], url = text.match(patterns.url); return url ? '': text; } } function inject(prop, elem, content) { if(prop != 'after') prop = 'before'; if(content = clean(elem.currentstyle[prop])) { $(elem)[prop == 'before' ? 'prepend' : 'append']( $(document.createelement('span')).addclass(prop).html(content) ); } } $.pseudo = function(elem) { inject('before', elem); inject('after', elem); elem.runtimestyle.behavior = null; }; if(document.createstylesheet) { var o = document.createstylesheet(null, 0); o.addrule('.dummy','display: static;'); o.csstext = 'html, head, head *, body, *.before, *.after, *.before *, *.after * { behavior: none; } * { behavior: expression($.pseudo(this)); }'; } })(jquery);