从 EMSCRIPTEN 访问 DOM

Posted

技术标签:

【中文标题】从 EMSCRIPTEN 访问 DOM【英文标题】:Accessing DOM from EMSCRIPTEN 【发布时间】:2017-11-20 15:08:38 【问题描述】:

有没有办法从 EMSCRIPTEN C++ 应用程序访问 DOM?

例如,我想读取/设置 html textarea 的值并接收 html 按钮 onclick 事件。

有人可以提供一个 C++ sn-p 吗?

谢谢。

【问题讨论】:

【参考方案1】:

我会尝试用我目前找到的唯一方法来回答我自己的问题:

这是 html sn-p:

<!-- html file -->
...
<input type="text" id="my_textbox" value="...">
...
<input type="submit" value="Submit" onclick="_onBtnPressed()">
...

这是 C++ 代码:

// C++ file

// callback for button event
extern "C"

    void onBtnPressed()  std::cout << "Btn pressed\n"; 


...

// change text of a text box:
emscripten_run_script("document.getElementById('my_textbox').value = 'Hello, emscripten world!'");

使用标志编译:

emcc -s EXPORTED_FUNCTIONS="['_onBtnPressed']" ...

此方法有效。但是,我希望有一些显式的 emscripten API 来直接操作 DOM。

【讨论】:

以上是关于从 EMSCRIPTEN 访问 DOM的主要内容,如果未能解决你的问题,请参考以下文章

从 Asm.js/emscripten 启用 WebGL 扩展?

使用 emscripten 将字符串从 C++ 传递给 JS

是否可以使用 Emscripten 从 JavaScript 调用 C++ 函数?

如何使用 Emscripten 将对象从 Javascript 传递到 C++

带有模块加载器的 Emscripten

是否可以使用 emscripten 使用 Javascript 从 C++ 打印字符串?