我在Firefox上使用Greasemonkey,它的编辑器绝对可怕,没有选择可以使用外部编辑器。
因此,我的用户脚本会附加我的网络托管javascript文件,每当我保存该文件时,该文件就会通过FTP从编辑器自动同步。
但是,我仍然需要访问GM.setValue
和GM.getValue
,以便可以在用户脚本的页面之间共享设置。
我的解决方案是在用户脚本中为其创建包装,以便网页的javascript可以调用
function SetSetting(name, value)
{
(async () => {
await GM.setValue(name, value);
})();
}
function GetSetting(name, callback)
{
(async () => {
let result = await GM.getValue(name);
callback(result);
})();
}
unsafeWindow.GetSetting = GetSetting;
unsafeWindow.SetSetting = SetSetting;
问题是Firefox不允许我调用这些函数。
它引发错误:
错误:拒绝访问对象的权限
在控制台中。
我的Web脚本如何在不使用涉及轮询的复杂方法的情况下将设置保存到用户脚本中?