Emscripten:用控制台(某种)替换提示

Posted

技术标签:

【中文标题】Emscripten:用控制台(某种)替换提示【英文标题】:Emscripten: replacing prompt with console (of some sort) 【发布时间】:2013-08-18 23:08:42 【问题描述】:

我有(交互式 - 像 python shell)C++ 控制台应用程序并开始使用 Emscripten(从 C++ 转编译为 JS)。一切都很好,但我希望将 JS 的焦点窃取提示替换为不那么……古怪的东西。

我尝试过:我添加了一个输入文本区域和一个按钮来生成 html,并用一个 while 循环替换了提示调用行(循环直到用户按下按钮)。这效果不太好,空循环冻结了浏览器(这可能是意料之中的,但 JS 中没有睡眠功能)。

所以,简而言之,我想要的是这样的布局:

output textarea / output textarea / output textarea / output textarea
output textarea / output textarea / output textarea / output textarea
output textarea / output textarea / output textarea / output textarea
output textarea / output textarea / output textarea / output textarea

input textarea <ok button>

和行为:

while (1)
  let program work until input requested
  wait for user to clik on the <ok button> above

有什么简单的方法可以通过修改(emcc's)生成的 JS 代码来实现吗? (我知道如何通过修改(我的)原始代码来实现这一点,但如果可能的话,我想避免这种情况)

【问题讨论】:

【参考方案1】:

不太确定你到底想做什么。

不过,请先阅读有关 Browser limitations 的 Emscripten 文档。

您可以使用window.setTimeout 每 N 毫秒注册一个回调并执行您的输出文本区域

如果您想“等待”用户输入,最好将控制权交给浏览器主循环,并在单击按钮时调用回调,从而恢复处理(使用文本输入)。

【讨论】:

我正在尝试用 textarea+button 组合替换 JS 的提示(根据我从标准输入读取的请求调用)。我知道您的解决方案,但是如果有一些集成的方法可以实现这一点,那就太好了。还是谢谢! 坦率地说,我认为使用表单的用户体验与从控制台阅读有很大不同。所以我认为这是可以理解的,为什么这可能永远不会被集成 我同意我想要的东西太具体而无法集成到 Em 中,但可能会集成的是一种机制,可以用更合适的东西替换提示,而不需要大量修改结构输出代码。

以上是关于Emscripten:用控制台(某种)替换提示的主要内容,如果未能解决你的问题,请参考以下文章

将 C/C++ 套接字传递给 EM_ASM 以在 Emscripten 中用作 websocket

我可以以某种方式构建 webassembly 代码*没有* emscripten“胶水”吗?

如何使用 emscripten 生成独立的 WebAssembly

Emscripten/NodeJS:使实际的文件系统默认可用

错误:未定义符号:gzclose opencv emscripten

是否可以像现在一样轻松编译 Emscripten,但没有控制台和 emscripten 徽标?