AFIK,JS包装器调用fetch()而不是XHR。如果可用,您可以使用Service Worker拦截该请求并返回您想要的任何内容。
通过使用以下选项进行编译,
emcc -s WASM=1 main.cpp -o index.js
emscripten生成一个index.wasm
和一个js包装器index.js
。js包装程序在浏览器中运行时,使用.wasm
加载位于同一目录中的XMLHttpRequest
文件。
因此,如果需要手动加载.wasm
文件,该怎么办?加载部分似乎在包装器中进行了硬编码。
在某些情况下,我需要此:
.wasm
文件。.wasm
文件的URL是动态生成的。XMLHttpRequest
的沙箱中运行,只有getMyData('some_file')
这样的API。我知道我只能通过以下方式生成.wasm
文件:>
emcc -s WASM=1 main.cpp -o index.wasm
但是然后我丢失了包装器,当使用某些脚本化API(如SDL和GLES)时,包装器并不简单。
通过使用以下选项进行编译,emcc -s WASM = 1 main.cpp -o index.js emscripten生成index.wasm和js包装器index.js。 js包装器加载位于相同.... >>>
AFIK,JS包装器调用fetch()而不是XHR。如果可用,您可以使用Service Worker拦截该请求并返回您想要的任何内容。
您还可以修改Emscripten源代码(我有v1.39.13)来重写默认的加载行为。在文件$EMSDK/upstream/emscripten/src/preamble.js
中,根据您的喜好修改函数getBinaryPromise()
和getBinaryPromise()
,然后使用getBinary()
进行构建,以在WASM JS包装器中具有自定义的加载行为。
AFIK,JS包装器调用fetch()而不是XHR。如果可用,您可以使用Service Worker拦截该请求并返回您想要的任何内容。