【问题标题】:Get a list of Available Functions on Tampermonkey [duplicate]获取 Tampermonkey 上的可用功能列表 [重复]
【发布时间】: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("标识的注释")))

标签: javascript greasemonkey tampermonkey


【解决方案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],也会有几十个标准的无关函数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-09
  • 1970-01-01
  • 1970-01-01
  • 2011-10-06
  • 2014-12-30
  • 1970-01-01
相关资源
最近更新 更多