Firefox addon 网页Javascript和扩展(使用js ctypes)通信

Firefox addon 网页Javascript和扩展(使用js ctypes)通信,firefox-addon,jsctypes,Firefox Addon,Jsctypes,我已经编写了一个使用js ctypes的扩展。我在js ctypes绑定的扩展中有一个函数,它带有一个C库函数。现在,我想通过扩展(JSCtypes)将从web页面加载的一些数据传递给这个C库。我该怎么做 我遇到了-。 我理解了传递消息(即字符串)的部分,但现在我如何使用它将数据从网页传递到扩展的js ctypes绑定函数 确切地说,我在我的网页js脚本中分配了一个数组。填充一些数据。现在我需要将此数组/数据发送到C库函数,即使用此数据调用C lib函数与扩展通信,将数据作为JSON发送(有时数

我已经编写了一个使用js ctypes的扩展。我在js ctypes绑定的扩展中有一个函数,它带有一个C库函数。现在,我想通过扩展(JSCtypes)将从web页面加载的一些数据传递给这个C库。我该怎么做

我遇到了-。 我理解了传递消息(即字符串)的部分,但现在我如何使用它将数据从网页传递到扩展的js ctypes绑定函数


确切地说,我在我的网页js脚本中分配了一个数组。填充一些数据。现在我需要将此数组/数据发送到C库函数,即使用此数据调用C lib函数

与扩展通信,将数据作为JSON发送(有时数组序列化错误)

例如,您可以发送事件:

var obj = JSON.stringify({arg1: 3, arg2: "some text"});
var event = new CustomEvent("YourAddonEvent", { detail: obj });
top.dispatchEvent(event);
在extension parse JSON中,您将获得带有参数的对象

var args = JSON.parse(event.detail);
加载库和声明函数后,例如:

var func = lib.declare("YourFuncName", ctypes.default_abi, ctypes.int, ctypes.int, ctypes.char.ptr, );
您可以调用您的函数:

var result = func(args.arg1, args.arg2);

请注意,这与NPAPI无关,但这是否意味着将数组转换为字符串或从字符串转换为字符串?我必须澄清,我需要在这里处理类型化数组。那将是低效的,对吗?我遗漏了什么吗?如果没有,是否有更好的/替代方法来处理此问题?@lucent尝试以下方法:或者如果数组中有参数,则可以对函数使用
调用
应用