Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Title tooltip is not shown when span is child of anchor

For example, consider the following DOM structure.

<a href="#" title="The Anchor">
  <img src="http://www.adiumxtras.com/images/thumbs/dango_status_icon_set_7_19047_6248_thumb.png" />
  <span>This is a link</span>
</a>

The issue is that hovering over This is a link text doesn't show the tooltip, while hovering over the image does show the tooltip. This issue doesn't occur everywhere i.e. if a page has multiple DOM snippets like above, some show tooltip on hover and some do not. This strange behavior is only in IE8 and IE9 with HTML 4 transitional doctype(IE8 and IE9 running in IE8 and IE9 standards mode respectively.). This issue goes away if I use strict doctype.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

Can this be in anyway related to JS? Or is it something else in DOM that could be causing this?

I found similar references to this problem in stackoverflow, but none of them explain the reason why this occurs.

HTML link title atrribute tooltip internet explorer 8

https://stackoverflow.com/a/7901175/1571437

like image 469
Arjun Avatar asked Jan 15 '23 02:01

Arjun


2 Answers

Even though the span which is a child of anchor has some minimum height because of the text it holds, the anchor as such doesn't has any height in IE. Because of this, whenever you hover over the text, the tooltip doesn't appear. To verify the same, execute the following code snippet in console

document.getElementById("element's id").offsetHeight // will return 0

This is a bug in IE and workaround would be to do something like following:

a[title] span {
    display: inline-block;
}
like image 197
Arjun Avatar answered Jan 17 '23 18:01

Arjun


Just a little mentioning of an IE mystery I just had in this context (IE9 in IE7-mode). My links with title-Tooltips have nested divs in it, and the tooltips show - but not if below there is a spacer-div with "clear:both" in its definition. After I removed the clear from the spacer, the tooltips showed. Before, they did not show in the row above the spacer, but they worked below the spacer. Yeah. Some more hours of experimenting to find an IE workaround.

Of course, a spacer without clear:both does not work very well (FF put it on top of other content above..). Finally it helped to put the title-atts to the inner div instead of the link itself.

like image 38
hyphan Avatar answered Jan 17 '23 17:01

hyphan