| <!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> |