0

所以我已经为此绞尽脑汁很久了。这是情况。当它们可用时,我不想使用诸如 mouseup 和 mousedown 之类的事件。然而,对于 iPhone,这些显然必须被 touchend 和 touchstart 所取代。我要做的是检测是否支持前两个事件,而不是是否支持触摸事件。这是因为 Android 和其他设备确实支持 mouseup 和 mousedown。

至此我已经尝试了所有可以想象到的检测方法,包括(type是传入的事件类型):

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

4

0 回答 0