Firefox は、無効な入力要素のイベントをサポートしていません (無効な入力のイベントを参照)。しかし、私がテストした他のすべてのブラウザー (IE8、Chrome、Opera、Safari5) はサポートしています。問題は、イベント委任を介して onClick イベントを使用して、無効な要素を有効にしたいことです (デモ: http://codepen.io/cimmanon/pen/Emkwo )。
推奨される解決策は、無効な要素の上に要素をオーバーレイし、それを使用してクリック イベントをインターセプトすることです。無効な要素のすべてのインスタンスを調べて変更するのは、価値があるよりも面倒なので、JavaScript を介してオーバーレイを挿入したいと思います (さらに、マークアップを汚染するので、あまり好きではありません)。
ブラウザーが私がしていることをサポートしているかどうかを検出し、それらのブラウザーにオーバーレイのみを挿入する方法はありますか? 私はこのようなことができると思っていましたが、Firefox は偽陽性を出します:
var foo = document.getElementById('foo');
foo.onclick = function(e) {
return true;
}
if (foo.onclick()) {
console.log('browser supported!');
}