如何在只有画布的情况下摆脱 emscripten 徽标和控制台?
Posted
技术标签:
【中文标题】如何在只有画布的情况下摆脱 emscripten 徽标和控制台?【英文标题】:How to get rid of emscripten logo and console while only having a canvas? 【发布时间】:2021-04-20 08:52:30 【问题描述】:每当我用emcc main.c -o index.html
编译我的C 代码时,emscripten 都会生成一个带有他们的徽标、一些按钮和控制台的html 文件。但我不想要那些。我只想要可以显示我的 SDL 渲染内容的画布。
我做了一些研究,发现this question in stack overflow。显然你必须输入 emcc --shell-file
并给它一些模板 html 作为参数。
所以我做了一个这样的模板html文件
<html>
<head>
<title>Some title</title>
</head>
<body>
</body>
</html>
但是当我运行emcc main.c -o index.html --shell-file template.html
时,它给出了一个错误。显然 emscripten 寻找一些想法 - SCRIPT
。
所以我在我的身体里添加了 SCRIPT
。它编译得很好。但是当我在localhost:3000
中运行我的index.html
时,我在控制台中遇到了一个错误,上面写着cannot find addEventListener of undefined
。
[注:我正在运行一个 SDL 程序。 The one mentioned in their docs
我该怎么办?提前致谢
【问题讨论】:
你为什么不找到默认的模板文件并编辑那个? 我查看了那个文件,对我来说似乎是一团糟。当然,我可以慢慢阅读每个标签在做什么,但感觉不是解决我的问题的正确方法。我正在寻找一种更简单的方法,或者一个已经构建的没有徽标的模板和所有(我在任何地方都没有找到) 也许 shell_minimal.html 就是那个。 github.com/emscripten-core/emscripten/blob/main/src/… 【参考方案1】:Here 是一个最小示例,您可以将其用作您的index.html
,假设您的画布代码位于index.js
:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<!-- Create the canvas that the C++ code will draw into -->
<canvas id="canvas" oncontextmenu="event.preventDefault()"></canvas>
<!-- Allow the C++ to access the canvas element -->
<script type='text/javascript'>
var Module =
canvas: (function() return document.getElementById('canvas'); )()
;
</script>
<!-- Add the javascript glue code (index.js) as generated by Emscripten -->
<script src="index.js"></script>
</body>
</html>
【讨论】:
以上是关于如何在只有画布的情况下摆脱 emscripten 徽标和控制台?的主要内容,如果未能解决你的问题,请参考以下文章
对 Chrome 的同源策略的困惑:如何在不要求用户禁用 Chrome 中的安全性的情况下摆脱它?
iOS 和 Android:在不更新整个应用程序的情况下摆脱 Admob 横幅广告的最快方法?
如何在不复制的情况下将画布 imageData 传递给 emscripten c++ 程序?