diff options
Diffstat (limited to 'misc/wasm/wasm_exec.html')
-rw-r--r-- | misc/wasm/wasm_exec.html | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/misc/wasm/wasm_exec.html b/misc/wasm/wasm_exec.html new file mode 100644 index 0000000..72e6447 --- /dev/null +++ b/misc/wasm/wasm_exec.html @@ -0,0 +1,49 @@ +<!doctype html> +<!-- +Copyright 2018 The Go Authors. All rights reserved. +Use of this source code is governed by a BSD-style +license that can be found in the LICENSE file. +--> +<html> + +<head> + <meta charset="utf-8"> + <title>Go wasm</title> +</head> + +<body> + <!-- + Add the following polyfill for Microsoft Edge 17/18 support: + <script src="https://cdn.jsdelivr.net/npm/text-encoding@0.7.0/lib/encoding.min.js"></script> + (see https://caniuse.com/#feat=textencoder) + --> + <script src="wasm_exec.js"></script> + <script> + if (!WebAssembly.instantiateStreaming) { // polyfill + WebAssembly.instantiateStreaming = async (resp, importObject) => { + const source = await (await resp).arrayBuffer(); + return await WebAssembly.instantiate(source, importObject); + }; + } + + const go = new Go(); + let mod, inst; + WebAssembly.instantiateStreaming(fetch("test.wasm"), go.importObject).then((result) => { + mod = result.module; + inst = result.instance; + document.getElementById("runButton").disabled = false; + }).catch((err) => { + console.error(err); + }); + + async function run() { + console.clear(); + await go.run(inst); + inst = await WebAssembly.instantiate(mod, go.importObject); // reset instance + } + </script> + + <button onClick="run();" id="runButton" disabled>Run</button> +</body> + +</html>
\ No newline at end of file |