This looks great, thanks for taking your time in writing it.
Is it me or the :after example in firefox doesn't work?

On 9/22/07, Christian Bach <[EMAIL PROTECTED]> wrote:
>
> Updated the script to support :focus and :after
>
> http://lovepeacenukes.com/jquery/ie6cssfix/
>
> /christian
>
> 2007/9/21, Christian Bach < [EMAIL PROTECTED]>:
> >
> > Unfortunately :after renders as unknown in ie6 :(
> >
> > So no luck there...
> >
> > 2007/9/21, Christian Bach <[EMAIL PROTECTED] >:
> > >
> > > That would be way cool, and not to hard to implement!
> > >
> > > /christian
> > >
> > > 2007/9/21, Brandon Aaron <[EMAIL PROTECTED]>:
> > > >
> > > > 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]
> > > > > >
> > > > >
> > > > >
> > > >
> > >
> >
>


-- 
Joan Piedra  ||  Frontend web developer
http://www.justaquit.com/  ||  http://www.joanpiedra.com/

Reply via email to