Garrett Smith:
> If hasFeature is to be used, it must be first feature tested.
As will any alternate API for detecting implementation.
>That feature [hasFeature()] cannot be reliably used for the web.
The fact that it isn't reliable today isn't proof that it is a bad API (hence, Doug's "reductio ad absurdum" comment).
Incorrect reporting by hasFeature() by an implementation is simply a bug on the implementation's part.
Unfortunately, any alternative to hasFeature will likely suffer from implementation bugs or incomplete implementation like the examples you gave. Unless you have a counter proposal, I believe the only solution which will be reliable on the web *today* is to create and dispatch a test event yourself.