I'm using the following localStorage extension:
importScripts('https://cdnjs.cloudflare.com/ajax/libs/localforage/1.7.3/localforage.min.js')
class LocalStorage {
constructor () {}
getInfo () {
return {
id: 'localstorage',
name: 'LocalStorage',
blocks: [
{
opcode: 'readLocalStorage',
blockType: Scratch.BlockType.REPORTER,
text: '[NAME]',
arguments: {
NAME: {
type: Scratch.ArgumentType.STRING,
defaultValue: 'highscore'
}
}
},
{
opcode: 'setLocalStorage',
blockType: Scratch.BlockType.COMMAND,
text: 'set [NAME] to [VALUE]',
arguments: {
NAME: {
type: Scratch.ArgumentType.STRING,
defaultValue: 'highscore'
},
VALUE: {
type: Scratch.ArgumentType.STRING,
defaultValue: '12'
}
}
}
]
}
}
readLocalStorage ({ NAME }) {
return localforage.getItem(NAME)
.then(value => value || '')
}
setLocalStorage ({ NAME, VALUE }) {
return localforage.setItem(NAME, VALUE)
}
}
Scratch.extensions.register(new LocalStorage())You can paste the following into the "Enter the URL of the extension" dialogue that pops up when you select "Choose an extension: For developers":
data:text/javascript;base64,aW1wb3J0U2NyaXB0cygnaHR0cHM6Ly9jZG5qcy5jbG91ZGZsYXJlLmNvbS9hamF4L2xpYnMvbG9jYWxmb3JhZ2UvMS43LjMvbG9jYWxmb3JhZ2UubWluLmpzJykNCg0KY2xhc3MgTG9jYWxTdG9yYWdlIHsNCiAgY29uc3RydWN0b3IgKCkge30NCg0KICBnZXRJbmZvICgpIHsNCiAgICByZXR1cm4gew0KICAgICAgaWQ6ICdsb2NhbHN0b3JhZ2UnLA0KICAgICAgbmFtZTogJ0xvY2FsU3RvcmFnZScsDQoNCiAgICAgIGJsb2NrczogWw0KICAgICAgICB7DQogICAgICAgICAgb3Bjb2RlOiAncmVhZExvY2FsU3RvcmFnZScsDQoNCiAgICAgICAgICBibG9ja1R5cGU6IFNjcmF0Y2guQmxvY2tUeXBlLlJFUE9SVEVSLA0KDQogICAgICAgICAgdGV4dDogJ1tOQU1FXScsDQogICAgICAgICAgYXJndW1lbnRzOiB7DQogICAgICAgICAgICBOQU1FOiB7DQogICAgICAgICAgICAgIHR5cGU6IFNjcmF0Y2guQXJndW1lbnRUeXBlLlNUUklORywNCiAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiAnaGlnaHNjb3JlJw0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH0NCiAgICAgICAgfSwNCiAgICAgICAgew0KICAgICAgICAgIG9wY29kZTogJ3NldExvY2FsU3RvcmFnZScsDQoNCiAgICAgICAgICBibG9ja1R5cGU6IFNjcmF0Y2guQmxvY2tUeXBlLkNPTU1BTkQsDQoNCiAgICAgICAgICB0ZXh0OiAnc2V0IFtOQU1FXSB0byBbVkFMVUVdJywNCiAgICAgICAgICBhcmd1bWVudHM6IHsNCiAgICAgICAgICAgIE5BTUU6IHsNCiAgICAgICAgICAgICAgdHlwZTogU2NyYXRjaC5Bcmd1bWVudFR5cGUuU1RSSU5HLA0KICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6ICdoaWdoc2NvcmUnDQogICAgICAgICAgICB9LA0KICAgICAgICAgICAgVkFMVUU6IHsNCiAgICAgICAgICAgICAgdHlwZTogU2NyYXRjaC5Bcmd1bWVudFR5cGUuU1RSSU5HLA0KICAgICAgICAgICAgICBkZWZhdWx0VmFsdWU6ICcxMicNCiAgICAgICAgICAgIH0NCiAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgIF0NCiAgICB9DQogIH0NCg0KICByZWFkTG9jYWxTdG9yYWdlICh7IE5BTUUgfSkgew0KICAgIHJldHVybiBsb2NhbGZvcmFnZS5nZXRJdGVtKE5BTUUpDQogICAgICAudGhlbih2YWx1ZSA9PiB2YWx1ZSB8fCAnJykNCiAgfQ0KDQogIHNldExvY2FsU3RvcmFnZSAoeyBOQU1FLCBWQUxVRSB9KSB7DQogICAgcmV0dXJuIGxvY2FsZm9yYWdlLnNldEl0ZW0oTkFNRSwgVkFMVUUpDQogIH0NCn0NCg0KU2NyYXRjaC5leHRlbnNpb25zLnJlZ2lzdGVyKG5ldyBMb2NhbFN0b3JhZ2UoKSkNCg==
Alternatively, you can URL settings editor (File > Change URL settings) to generate a URL like
If loading an extension this way doesn't work, there might have been an error, which will appear in the console. You can look up how to open the browser console