你不說你爲什麼要做到這一點,所以答案只能解決具體問題「如何判斷一個字符串是一個‘對’事件」。
我不認爲有一個明確的策略。使用從實現,標準或規範中整理出來的所有可能的事件類型的列表可能是合理可靠的,但是並不完美,因爲JavaScript實現可以自由地引入他們希望的任何新類型的事件。因此,這個列表需要經常更新,您必須至少測試並可能更新每個發佈的新瀏覽器和版本的列表。此外,所有瀏覽器都可能不支持所有事件。
使用諸如收集DOM對象的可枚舉「on」屬性或其原型的策略也不適合,因爲不需要主機在DOM對象上實現繼承,有些不會使它們可枚舉(例如Safari至少v9)。
另一種方法是看是否'on' + string
是一個DOM對象的標準屬性,所以:
function isPossibleEventName(s) {
var div = document.createElement('div');
return ('on' + s) in div;
}
['click','input','blur','foo','bar','paste'].forEach(function(s){
document.write('<br>Possible event ' + s + ': ' + isPossibleEventName(s));
});
至少會告訴你,如果主機支持特定的事件類型,但它可能需要在不同的元素類型上進行測試,因爲並非所有元素都必須支持所有事件。此外,它不會告訴你該字符串是否可能是某個其他主機中的「on」事件(但是它們都不會對元素原型的「on」屬性進行整理)。
雖然這應該適用於所有瀏覽器,但如果上述內容適用於舊版Firefox,則可以使用some doubt。但是,this post另有說法,在版本43中似乎還可以。您應該儘可能測試版本,只要您認爲合理。
也許不是一個確切的重複,但我認爲它有你尋求的答案:[* Javascript IN運營商兼容性*](http://stackoverflow.com/questions/2920765/javascript-in-operator-compatibility/2920832# 2920832)。 – RobG