0

我正在尝试通过@require 功能使tampermonkey 脚本可用于其他tampermonkey 脚本,这很好,但我也想在脚本中公开使用它的脚本所需的函数。我试过这个:

脚本为@required:

window.functionName = () => { console.log('Called from @required script') }

但即使在消费者脚本中启用了 unsafeWindow,我似乎仍然无法通过unsafeWindow.functionName(), nor访问该功能window.functionName()

显然,如果可能的话,我想避免使用 unsafeWindow ,但目前我无论如何都无法让它工作。

我的替代解决方案是让脚本成为 @required 脚本侦听窗口事件.. 像这样:

使用 @required 脚本的脚本:

window.dispatchEvent(new CustomEvent('CallRequiredFunction', { 
  detail: { 
    functionName: 'functionName',
    functionArguments: []
  },
});

然后在 @require'd 脚本中有一个 switch 语句或其他内容,以根据该自定义事件执行。

这会是一个适当的解决方案吗?有更好的选择吗?

4

0 回答 0