获取 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 上的所有功能,包括alertconfirm 等。 实际上我最终应用了 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脚本

如何安装tampermonkey

怎么在360极速浏览器上添加Tampermonkey 插件

YouTube上的Chrome扩展程序和Tampermonkey [重复]

如何在 Tampermonkey 中获取 cookie? [复制]

tampermonkey+beta怎么卸载?