Well why not fix :after and :before too :) -- Brandon Aaron
On 9/21/07, Christian Bach <[EMAIL PROTECTED]> wrote: > > Yeah that would make sense! > > A other thing that could be use full is to have a fix for the :focus > selector in IE6. > All though it will be returned as "unknown" in ie6. > > > If you want to make a plugin and release it it's fine by me. > > /christian > > 2007/9/21, Fabien Meghazi <[EMAIL PROTECTED]>: > > > > > > > > 1. The script only looks for declarations in the stylesheets, that's > > the > > > > beauty of it. > > > yes, but I mean that if you look at the content of the cssRules > > > variable you will see that there are a lot of css declaration which > > > could be avoided (or they can't ?) > > > > Christian, > > > > Ok, here's what I meant : > > In parseCss(), checking if css selector contains ":hover" (and return > > if not) will only do stuff on css selectors where :hover is present. I > > guess in most cases this is what we want. (correct me if I'm wrong). > > It's quite faster (I can feel it because I've got a 1ghz laptop :-) > > > > Anyway, here's a version of your script where we can choose if stuff > > should be done only for :hover selectors or not. > > > > Calling $.ie6HoverFix(); has the normal behaviour as you designed it. > > Calling $.ie6HoverFix(true); will redo css declaration only for > > :hover selectors > > > > Here it is. What do you think ? > > > > // ie6HoverFix - Author : Christian Bach > > $.ie6HoverFix = function(only_hovers) { > > if ($.browser.msie && $.browser.version < 7) { > > only_hovers = only_hovers || false; > > var cssRules = [], newStyleSheet = > > document.createStyleSheet(), > > styleSheets = document.styleSheets; > > function parseCSS(rule) { > > var prefix = "ie6fix-"; > > var select = rule.selectorText, style = > > rule.style.cssText; > > if (only_hovers && select.indexOf(":hover") == > > -1) { > > return; > > } > > var element = select.replace(/:(hover).*$/, ''); > > var pseudo = select.replace(/[^:]+:([a-z-]+).*/i, > > '$1'); > > var styleRule = element + "." + prefix + pseudo; > > > > var className = prefix + pseudo; > > $(element).hover(function(e) { > > $(this).addClass(className); > > }, function(e) { > > $(this).removeClass(className) > > }); > > cssRules.push([styleRule,style]); > > } > > for (var i = 0, ii = styleSheets.length ; i < ii; i++) { > > for(var j = 0, jj = styleSheets[i].rules.length; > > j < jj; j++) { > > parseCSS(styleSheets[i].rules[j]); > > } > > } > > for (var i = 0, ii = cssRules.length; i < ii; i++) { > > var ruledef = cssRules[i][1]; > > if (ruledef.length != 0) { > > newStyleSheet.addRule(cssRules[i][0], > > ruledef); > > } > > } > > } > > }; > > > > > > > > > > -- > > Fabien Meghazi > > > > Website: http://www.amigrave.com > > Email: [EMAIL PROTECTED] > > IM: [EMAIL PROTECTED] > > > >