如何使用EM_JS从带有参数的C++调用javascript方法
How to call javascript method from C++ with parameters using EM_JS
我刚刚从 C/C++ 调用 JavaScript 并按照他们的说明进行操作。 我能够从C++调用 Js 方法
C++
#include <iostream>
#include <string>
#include <emscripten.h>
#include <emscripten/bind.h>
EM_JS(void, call_js, (), {
jsMethod();
});
bool callJsBack()
{
call_js();
return true;
}
EMSCRIPTEN_BINDINGS(module)
{
emscripten::function("callJsBack", &callJsBack);
}
Js
<script>
var Module = {
onRuntimeInitialized: function() {
console.log('Module.callJsBack(): ' + Module.callJsBack());
}
};
function jsMethod() {
alert('I am a js method!');
}
</script>
我想使 jsMethod(( 参数化(想要在调用 jsMethod(( 时从C++传递字符串(。
function jsMethod(msg) {
alert(msg);
}
我没有找到任何示例或建议来实现此要求。
找到答案:
C++
EM_JS(void, call_js_agrs, (const char *title, int lentitle, const char *msg, int lenmsg), {
jsMethodAgrs(UTF8ToString(title, lentitle), UTF8ToString(msg, lenmsg));
});
bool callJsBackWithAgrs()
{
const std::string title = "Hello from C++";
const std::string msg = "This string is passed as a paramter from C++ code!";
call_js_agrs(title.c_str(), title.length(), msg.c_str(), msg.length());
return true;
}
EMSCRIPTEN_BINDINGS(module)
{
emscripten::function("callJsBackWithAgrs", &callJsBackWithAgrs);
}
Js:
var Module = {
onRuntimeInitialized: function() {
Module.callJsBackWithAgrs();
}
};
function jsMethodAgrs(title, msg) {
alert(title + 'n' + msg);
}
完整的工作示例: CallJsFromCpp
相关文章:
- 如何反转整数参数包
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 如何使用默认参数等选择模板专业化
- 模板参数替换失败,并且未完成隐式转换
- 具有默认模板参数的多态类的模板推导失败
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 函数调用中参数的顺序重要吗
- 部分定义/别名模板模板参数
- 模板-模板参数推导:三个不同的编译器三种不同的行为
- 使用不带参数的函数访问结构元素
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 如何使用Luacneneneba API正确读取字符串和表参数
- 在派生函数中指定void*参数
- 视图中的参数推导失败:take_while
- static_assert在宏中,但也可以扩展到可以用作函数参数的东西
- 使用指向成员的指针将成员函数作为参数传递
- 没有名称的C++模板参数
- 如何将enable-if与模板参数和参数包一起使用