The problem now a days is phones. Their browsers work very different from desktop browsers.
Or the "javascript" used in Qt ... or any new appliance/software that wants to provide a common accessible language for their "events" and choose a JS that is patched to support stuff like hardware functions.
I have been using these kinds of FrankeinJS in the past.