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] >