Since no one has yet come up with any kind of definitive list, I did some testing on a fairly recent version of Chrome and came up with the following list of elements which are not tabbable at all:
<base>
<basefont>
<embed>
<head>
<link>
<meta>
<object>
<param>
<source>
<style>
<title>
<track>
Unfortunately, since I only spent a couple of hours trying to write this list, it has a few caveats:
- Not tested on any browser other than Chrome
- I skipped over most of the elements that I thought likely to be tabbable (as they would have normal displayed content)
- I have not tried setting any of these to be displayed (apart from
<title>
as in my comments)
I was most surprised that the following elements are tabbable:
<audio>
and<video>
(surprised because<embed>
and<object>
are not)<br>
and<wbr>
<col>
and<colgroup>
<frame>
and<frameset>
(although they are more of a special case as they are not technically valid elements in HTML anyway)<html>
(there is almost no difference between this and<body>
from a tabbing perspective)<optgroup>
and<option>
(although tabbing to them does not give any visual indication - i.e. the select box does not open)