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!');
}