如何获取所有GlobalEventHandlers的列表?

时间:2018-03-30 11:56:50

标签: javascript event-handling

https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers

如何获取GlobalEventHandlers的所有属性列表?

具体来说,我想测试传递的字符串是否是GlobalEventHandlers的属性,如:

console.log(GlobalEventHandlers.includes('onClick')); // true
console.log(GlobalEventHandlers.includes('fizzBuzz')); // false

2 个答案:

答案 0 :(得分:2)

获取所有这些内容的唯一真正方法是自己构建列表,但是您可以遍历窗口对象中的键并查找以

开头的键。
int main()
{
cout << "Enter a number: ";
int number;
cin >> number;
int count = 1;
int a = 1;                  //The first number of the Fibonacci's serie is 1
int b = 1; 
int i = 1;                 //The second number of the Fibonacci's serie is 2
while (i <= number)
{
    if (i < 3)
        cout << "1 ";
    else
    {
        count = a + b;     //Every number is the sum of the previous two
        a = b;
        b = count;
        cout << count << " ";
    }
    i++;
}

return 0;
}

但这不会仅仅归还内置的那些。如果有人设置了像

这样的自定义事件监听器
Object.keys(window).filter(k => !k.indexOf('on'))

也将显示在结果中。

答案 1 :(得分:1)

我编写了一个npm软件包,可以为您完成此任务。

完整用法和安装:global-event-handlers-map

它提取window(包括window)下存在的每个对象下的每个全局事件处理程序。

例如,通过调用:

const getGlobalEventsHandlersMap = require('global-event-handlers-map');

const gehsMap = getGlobalEventsHandlersMap('WebSocket');

您将得到以下结果(gehsMap将是)

{
  "WebSocket": [
    "onopen",
    "onerror",
    "onclose",
    "onmessage"
  ]
}

通过不带任何参数的调用getGlobalEventsHandlersMap(),您将收到所有全局事件处理程序。

README文件应具有指示性,并应帮助您了解如何从该软件包中获取所需的一切。

您可以:

  1. 在浏览器中执行一次代码,获取结果,然后在代码中静态使用该映射。

  2. 将库集成到代码中,并在每次代码在浏览器中运行时动态创建地图。

最好的方法取决于您的需求,应该致电给您。我可以帮助您了解哪种方式最适合您,具体取决于您的需求。

希望有帮助!