HTML5 Save Export Import

Local Storage Access. Mainly used for html5 game save export or import.

当前为 2020-01-21 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name HTML5 Save Export Import
  3. // @name:zh HTML5游戏存档导入导出
  4. // @namespace http://tampermonkey.net/
  5. // @version 0.7
  6. // @description Local Storage Access. Mainly used for html5 game save export or import.
  7. // @author devseed
  8. // @match *://*/*
  9. // @grant none
  10. // ==/UserScript==
  11.  
  12. var YURI = YURI || {};
  13. (function($$) {
  14. "use strict";
  15. var _saveFile = (name, content) => {
  16. //console.log(name+" "+content);
  17. var e = document.createEvent('MouseEvents');
  18. var a = document.createElement('a');
  19. var blob = new Blob([content], {type:'application/octet-stream'});
  20. a.download = name;
  21. a.href = window.URL.createObjectURL(blob);
  22. a.dataset.downloadurl = ['application/octet-stream', a.download, a.href].join(':');
  23. e.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
  24. a.dispatchEvent(e);
  25. }
  26. var _requestFiles = (requestDone) => {
  27. var i = document.createElement('input');
  28. i.type = 'file';
  29. i.addEventListener('change', () => {
  30. requestDone(i.files);
  31. });
  32. i.click(); //can not open without user click
  33. }
  34.  
  35. $$.storage = {
  36. saveFile:function(path, content) {
  37. _saveFile(path, content);
  38. },
  39. exportSave: function(isMerge) {
  40. isMerge = isMerge || true
  41. var key_value={};
  42. if(arguments.length > 1){
  43. for(var i=1;i<arguments.length;i++)
  44. key_value[arguments[i]] = window.localStorage.getItem(arguments[i]);
  45. }
  46. else{
  47. for(var i=0;i<window.localStorage.length;i++)
  48. key_value[window.localStorage.key(i)] =
  49. window.localStorage.getItem(window.localStorage.key(i));
  50. }
  51. if(isMerge){
  52. var json = JSON.stringify(key_value);
  53. _saveFile("saves.json", json);
  54. } else{
  55. for (var k in key_value){
  56. if(key_value[k]!=null)
  57. _saveFile(k.toString()+".sav", key_value[k]);
  58. }
  59. }
  60. },
  61. importSave: function() {
  62. var requestDone = (files) => {
  63. var file = files[0];
  64. var reader = new FileReader();
  65. reader.onload = (e) =>{
  66. var text=e.target.result;
  67. var key_value = {};
  68. //console.log(text);
  69. if(file.type == 'application/json'){
  70. key_value = JSON.parse(text);
  71. }else{
  72. var key = file.name.split('.');
  73. key = key.slice(0, key.length-1).join('.');
  74. key_value[key] = text;
  75. }
  76. for(var key in key_value){
  77. window.localStorage.setItem(key, key_value[key]);
  78. }
  79. }
  80. reader.readAsText(file);
  81. }
  82. _requestFiles(requestDone);
  83. },
  84. }
  85. })(YURI) //initial functions
  86.  
  87.  
  88. var button_export = button_export ||
  89. $('body').append('<input type="button" id="btn_export" value="Export saves" \
  90. style="position relative;margin:0px 10px 0px 0px">')
  91. .find('#btn_export');
  92. console.log(button_export)
  93. var button_import = button_import ||
  94. $('body').append('<input type="button" id="btn_import" value="Import saves">')
  95. .find('#btn_import');
  96.  
  97. button_export.click(()=>YURI.storage.exportSave())
  98. button_import.click(()=>YURI.storage.importSave())

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址