Most modern browsers support the :hover selector for any html element. This is cool, because it enables you to, for instance, apply a mouseover effect to table rows <tr> using only CSS. IE however, with a market share of > 90%, does not natively support :hover on elements other than links <a>, rendering the entire :hover concept useless. Or does it?
IE allows you to look at the stylesheets and each individual rule with javascript. Normally, IE returns UNKNOWN for anything it does not support. This seems to sound reasonable at first, but it's not. For instance, a p:first-child would change into p:unknown, and a a[href] would altogether be molested to a capital UNKNOWN. Now why can't it just return the true selector text?
Fortunately, even though IE won't actually DO anything with a tr:hover the :hover is recognized and left alone.
More at http://www.xs4all.nl/~peterned/csshover.html