javascript - 获取 Tampermonkey 上的可用功能列表
问题描述
我目前有一个 Tampermonkey 脚本,其中包含一系列上下文化函数,我提供这些函数作为在某个页面上运行的选项。
我的代码的简化版本是:
window.func1 = function func1() {...}
window.func2 = function func2(a) {...}
window.func3 = function func3(a, b) {...}
我希望有一些函数可以获取我拥有的当前脚本并为我提供可用函数的列表,类似于:
>> getAvailableFunctions()
<< func1, func2, func3
我一直在用这种Object.getOwnPropertyNames
方法进行调查,但我似乎无法用 Tampermonkey 把它拉出来。
我可以有一些输入吗?
谢谢!
解决方案
你可以尝试这样的事情:
Object.entries(window).flatMap(([k, v]) => typeof v === "function" ? k : [])
Object.entries
获取一个键值对数组,flatMap
这里用作组合的filter
+ map
。这相当于:
Object.entries(window).filter(a => typeof a[1] === "function").map(([k]) => k)
您也可以尝试排除这样的原生函数(在 FF 和 Chrome 上测试):
Object.entries(window)
.flatMap(([k, v]) => typeof v === "function" && !/{\s*\[native code]\s*}/.test(v) ? k : [])
推荐阅读
- c# - 在让相机跟随球时,应该由哪个控制相机位置?球还是相机本身?
- ios - 使用 AVAssetWriter 写入视频失败
- cloudera - cloudera VM中的gcloud安装问题
- php - 如何连接地图结构以将其可视化?
- c# - 带有 Action/Id 的 ASP.net 自定义路由
- javascript - mongodb:TableRow.TableRow 不是构造函数
- python - ImportError:无法从“zeep”导入名称“Client”
- javascript - 是否可以将从画布创建的 blob 直接插入到单元格中,而不仅仅是插入到工作表中?
- java - Cordova 构建错误“JDK 8 ('1.8.*') 的要求检查失败!检测到的版本:11.0.2”
- python-3.x - 如何从顶级特征中对正面和负面特征进行分类