获取 Tampermonkey 上的可用功能列表 [重复]
Posted
技术标签:
【中文标题】获取 Tampermonkey 上的可用功能列表 [重复]【英文标题】:Get a list of Available Functions on Tampermonkey [duplicate] 【发布时间】:2019-10-11 08:27:49 【问题描述】:我目前有一个 Tampermonkey 脚本,其中包含一系列上下文化函数,我提供这些函数作为在特定页面上运行的选项。
我的代码的简化版本是:
window.func1 = function func1() ...
window.func2 = function func2(a) ...
window.func3 = function func3(a, b) ...
我想要一些函数,它可以获取我拥有的当前脚本并为我提供可用函数的列表,类似于:
>> getAvailableFunctions()
<< func1, func2, func3
我一直在使用 Object.getOwnPropertyNames
方法进行调查,但我似乎无法使用 Tampermonkey 提取该方法。
我可以提供一些意见吗?
谢谢!
【问题讨论】:
您最好在window
上创建一个对象,然后将您的函数添加到该对象。否则,您将获得window
上的所有功能,包括alert
、confirm
等。
实际上我最终应用了 pswg 推荐的内容。尽管所有对象都在窗口中,但我可以应用过滤器来检索我需要的特定函数,方法是使用 .filter( a=> (typeof(a[1] ==="function" &&& a[1].toString().includes("标识的注释")))
【参考方案1】:
你可以试试这样的:
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 : [])
【讨论】:
它将列出在window
中定义的几十个(实际上是 Tampermonkey 的沙箱中的数百个)标准函数。
...即使排除了[native code]
,也会有几十个标准的无关函数。以上是关于获取 Tampermonkey 上的可用功能列表 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
Tampermonkey油猴 Userscript 显示当前网站所有可用的UserJS脚本
YouTube上的Chrome扩展程序和Tampermonkey [重复]