首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用C++使用EM_JS调用带有参数的javascript方法

如何使用C++使用EM_JS调用带有参数的javascript方法
EN

Stack Overflow用户
提问于 2019-12-30 14:24:33
回答 1查看 2.1K关注 0票数 3

我刚刚通过了从C/C++调用JavaScript并遵循了他们的指示。我能够从C++调用Js方法

C++

代码语言:javascript
运行
复制
#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

代码语言:javascript
运行
复制
<script>
    var Module = {
        onRuntimeInitialized: function() {
            console.log('Module.callJsBack(): ' + Module.callJsBack());
        }
    };

    function jsMethod() {
        alert('I am a js method!');
    }
 </script>

我想使jsMethod()参数化(希望在调用jsMethod()时从C++传递字符串)。

代码语言:javascript
运行
复制
function jsMethod(msg) {
    alert(msg);
}

我没有找到任何例子或建议来达到这一要求。

EN

回答 1

Stack Overflow用户

发布于 2019-12-31 19:38:23

找到了答案:

C++

代码语言:javascript
运行
复制
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:

代码语言:javascript
运行
复制
var Module = {
    onRuntimeInitialized: function() {
        Module.callJsBackWithAgrs();
    }
};

function jsMethodAgrs(title, msg) {
    alert(title + '\n' + msg);
}

完整的工作示例:CallJsFromCpp

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59532379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档