我如何在我的 greasemonkey 脚本中提供 link 来备份 GM_---value 数据库?

How can I provide a link inside my greasemonkey script to backup the GM_---value database?

我目前正在使用 GM_setValue 和 GM_getValue 将数据存储在我在 Greasemonkey 中创建的用户脚本中。我希望能够轻松地将数据保存在 GM 正在从脚本本身内部存储所有数据的 sqlite 数据库中。

例如,在页面右上角创建一个 link,上面写着 "Backup data"。单击时,它会直接下载 .sqlite 文件,或者它的 JSON.stringify() 值。

这有可能吗?我尝试采用这里的代码:Create text file in JavaScript 但它丑陋得像罪一样,这是一项巨大的黑客工作,需要使用 unsafeWindow.open() 我无法想象它会很好地扩展 when/if 我最终得到一个 JSON 字符串 100k 个字符长

你可以用这种方式创建一个可下载的文件

function download(filename, text) {
  var element = document.createElement('a');
  element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
  element.setAttribute('download', filename);

  element.style.display = 'none';
  document.body.appendChild(element);

  element.click();
  document.body.removeChild(element);
}

你可以调用这个函数

download('filename.sqlite', 'your-db');