HTML5 Save Export Import

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

当前为 2020-10-17 提交的版本,查看 最新版本

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

QingJ © 2025

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