Perfection killsのおかげで、次の JavaScript を使用してイベント サポートを検出できます。
function hasEvent(ev) {
var elem = document.createElement('a'),
type = 'on' + ev,
supported = elem[type] !== undefined;
if (!supported) {
elem.setAttribute(type, 'return;');
supported = typeof elem[type] === 'function';
}
elem = null;
return supported;
}
これは、私がそれを必要とするほぼ唯一の時間に機能しmouseenter
ます。サポートの検出。hasEvent('mouseenter')
Chrome や Firefox などでは false を返します。
focusin
しかし、現在、イベントとイベントをサポートしていないブラウザーを「修正」しようとしていfocusout
ます。PPK によると、それは基本的に単なる Firefox です。残念ながら、次の理由により、Chrome と Safari は「不完全な」サポートとしてリストされています。
Safari と Chrome は、これらのイベントを addEventListener でのみ発生させます。従来の登録ではありません。
一般的には、それで問題ありません。とにかく使うだけaddEventListener
です。ただし、経由でのサポートの検出は機能しないことを意味しelem.onfocusin !== undefined
ます。私はそれをテストしました、そしてそれは本当です:
<p>Do I support <a href="#">focusin</a>?</p>
<script>
var elem = document.getElementsByTagName('p')[0];
// hasEvent method defined here
function listener() {
var response = hasEvent('focusin') ? 'Yes!' : 'No...';
alert(response);
}
elem.addEventListener('focusin', listener, false);
</script>
No...
Chrome で上記のアラートが表示されます。focusin
ブラウザ スニッフィングを使用せずに、ブラウザが をサポートしているかどうかを検出する方法はありますか?