https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers
如何获取GlobalEventHandlers的所有属性列表?
具体来说,我想测试传递的字符串是否是GlobalEventHandlers的属性,如:
console.log(GlobalEventHandlers.includes('onClick')); // true
console.log(GlobalEventHandlers.includes('fizzBuzz')); // false
答案 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文件应具有指示性,并应帮助您了解如何从该软件包中获取所需的一切。
您可以:
在浏览器中执行一次代码,获取结果,然后在代码中静态使用该映射。
将库集成到代码中,并在每次代码在浏览器中运行时动态创建地图。
最好的方法取决于您的需求,应该致电给您。我可以帮助您了解哪种方式最适合您,具体取决于您的需求。
希望有帮助!