This is what I did. Most tooltip scripts require you to execute a function that stores the tooltips. This is a jQuery example:
$.when($('*').filter(function() { return $(this).css('text-overflow') == 'ellipsis'; }).each(function() { if (this.offsetWidth < this.scrollWidth && !$(this).attr('title')) { $(this).attr('title', $(this).text()); } })).done(function(){ setupTooltip(); });
If you didn't want to check for ellipsis css, you could simplify like:
$.when($('*').filter(function() { return (this.offsetWidth < this.scrollWidth && !$(this).attr('title')); }).each(function() { $(this).attr('title', $(this).text()); })).done(function(){ setupTooltip(); });
I have the "when" around it, so that the "setupTooltip" function doesn't execute until all titles have been updated. Replace the "setupTooltip", with your tooltip function and the * with the elements you want to check. * will go through them all if you leave it.
If you simply want to just update the title attributes with the browsers tooltip, you can simplify like:
$('*').filter(function() { return $(this).css('text-overflow') == 'ellipsis'; }).each(function() { if (this.offsetWidth < this.scrollWidth && !$(this).attr('title')) { $(this).attr('title', $(this).text()); } });
Or without check for ellipsis:
$.when($('*').filter(function() { return (this.offsetWidth < this.scrollWidth && !$(this).attr('title')); }).each(function() { $(this).attr('title', $(this).text()); });
text-overflow:ellipsis;doesn't work at all in Firefox -- see this question for more: stackoverflow.com/questions/4927257/…element.offsetWidth < element.scrollWidthas per this answer seems to work so far.text-overflow:ellipsis;now works in Firefox; it was added in Firefox 7 (released September 2011).