在JavaScript中检测事件支持?

时间:2012-04-15 05:34:13

标签: javascript events detection

所以我一直在讨论这个问题已经很长时间了。情况就是这样。当它们可用时,我不想使用mouseup和mousedown等事件。然而,对于iPhone而言,这些显然必须用touchend和touchstart取代。我要做的是检测是否支持两个以前的事件,而不是支持触摸事件。这是因为Androids和其他设备确实支持mouseup和mousedown。

此时我尝试了各种可以想象的检测方法,包括(类型是传入的事件类型):

var el = document.createElement('div');
eventName = 'on' + type;
var isSupported = (eventName in el);
if (!isSupported) {
  el.setAttribute(eventName, 'return;');
  isSupported = typeof el[eventName] == 'function';
}

if(document.hasOwnProperty('on' + type) 
  && typeof document['on' + type] !== 'undefined') {
  return true;
}

return 'on' + type in document.documentElement;

问题是这些方法中的每一种似乎都在我可靠的iPhone上评估为真。我真的可以使用一些见解。

一个要求是函数必须为一个类型接受一个字符串。我不能做像“document.onEvent”这样的事情。我有一系列要测试的事件,无论如何它应该是动态的。没有浏览器嗅探。

我也看了几篇关于这些不同想法的文章,所以我做了谷歌搜索。

http://perfectionkills.com/detecting-event-support-without-browser-sniffing/ http://www.asiantravelhotel.com/javascript/onbeforeunload-support-detection.html

0 个答案:

没有答案