我的问题很简单,我试图创建一个称为NaCl模块的chrome扩展.我的按钮和不同的文件似乎没问题,我在C++中非常简单的代码返回一个PostMessage hello World.但是,当我尝试它时,它不起作用.在Chrome扩展程序中包含NaCl模块,我还没有做过具体的事情吗?我必须说我有点失去希望.
这是我的"background.html":
<body>
<script src="background.js"></script>
<div id="listener">
<embed name="nacl_module"
id="nacl_correction"
src="nacl_correction.nmf"
type="application/x-nacl" />
</div>
<script >
document.getElementById('listener').addEventListener('load', moduleDidLoad, true);
</script>
</body>
Run Code Online (Sandbox Code Playgroud)
这是我的"background.js":
var NaclCorrectionModule = null; // Global application object.
function moduleDidLoad() {
NaclCorrectionModule = document.getElementById('nacl_correction');
//alert( NaclCorrectionModule);
if (NaclCorrectionModule == null) {
alert('Out');
}
else {
alert (NaclCorrectionModule);
}
NaclCorrectionModule.addEventListener('message', handleMessage, false);
}
function handleMessage(message_event) {
alert(message_event.data);
}
chrome.browserAction.onClicked.addListener(moduleDidLoad);
Run Code Online (Sandbox Code Playgroud)
最后,我的"Manifest.json":
{
"name": "Correction de Cordial sous Chrome",
"version": "1.0",
"background_page" :"background.html",
"description": "Intégration d'une extension Cordial pour …Run Code Online (Sandbox Code Playgroud) 我有一个镀铬打包的应用程序,其中还包括一个PNaCl/NaCl C++模块,以及一些NaCl模块需要读入的数据文件.但是,我无法读取文件.
我根据我能找到的所有文档和官方示例进行设置,以及答案:如何在chrome应用程序中包含数据文件以供本机客户端模块读取
SDK附带的nacl_io演示能够执行此操作,但它使用的是C语言,而不是C++.
我想出了一个简单的例子,我将在下面发布.当您按下页面上的按钮时,NaCl模块应加载test.txt的第一个字符并显示它.截至目前,它始终只响应"-100"(我输入的错误值),这意味着它无法打开文件,而不是文件的第一个字符.
任何人都可以建议一些允许它正常工作并加载文件的更改吗?
为了运行它,在Mac至少,我用这个命令,随着./file-test目录中的所有文件上:/应用/谷歌\ Chrome.app/Contents/MacOS/Google \铬--load-和推出应用内=./文件测试
请注意,如果您尝试使用它,则很可能需要更改makefile中的NACL_SDK_ROOT路径.
#include "ppapi/cpp/instance.h"
#include "ppapi/cpp/module.h"
#include "ppapi/cpp/var.h"
#include "nacl_io/nacl_io.h"
#include "sys/mount.h"
class FileTestInstance : public pp::Instance {
public:
explicit FileTestInstance(PP_Instance instance) : pp::Instance(instance)
{
// initialize nacl file system
nacl_io_init_ppapi(instance, pp::Module::Get()->get_browser_interface());
// mount the http root at /http
mount("", "/http", "httpfs", 0, "");
}
virtual ~FileTestInstance() {}
// Receive message from javascript
virtual void HandleMessage(const pp::Var& var_message) {
// Open and load from the file
int c;
FILE *file; …Run Code Online (Sandbox Code Playgroud)