我正在尝试通过@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 语句或其他内容,以根据该自定义事件执行。
这会是一个适当的解决方案吗?有更好的选择吗?