ref: f8ed76f815494de031c86441bf392f8658ff383d
parent: db5d3bf10e934e86fcdb792f49ae5cf28e1a2a8c
author: Ben Harris <bjh21@bjh21.me.uk>
date: Sat Dec 3 18:51:12 EST 2022
js: Bypass our own dialogue box when loading By constructing the <input type=file> off screen and activating it from JavaScript, we can jump straight to the browser's upload dialogue box without interposing our own one. This gives a smoother experience, and also avoids the difficult-to-handle <input type=file> ever being visible.
--- a/emccpre.js
+++ b/emccpre.js
@@ -391,13 +391,10 @@
document.getElementById("load").onclick = function(event) {
if (dlg_dimmer === null) {
- dialog_init("Upload saved-game file");
var input = document.createElement("input");
input.type = "file";
input.multiple = false;
- dlg_form.appendChild(input);
- dlg_form.appendChild(document.createElement("br"));
- dialog_launch(function(event) {
+ input.addEventListener("change", function(event) {
if (input.files.length == 1) {
var file = input.files.item(0);
var reader = new FileReader();
@@ -407,10 +404,9 @@
});
reader.readAsText(file);
}
- dialog_cleanup();
- }, function(event) {
- dialog_cleanup();
});
+ input.click();
+ onscreen_canvas.focus();
}
};