我有一个网站和谷歌浏览器扩展程序。扩展使用NaCl API(JavaScript)从用户的计算机写入/读取文件(C ++)。
我的问题是:我可以在我的网站中加载我的扩展程序,例如,在iFrame中保存其功能吗?
我试图这样做,但它只加载扩展“视觉”部分。写/读(NaCl)功能不起作用。
更好地解释我想做的事情的一个例子:
它实际上是这样工作的:
我想这样做:
或者另一种方式,但我认为这不可能,是吗?
有可能吗?我该怎么做?
修改
以下是代码:
在manifest.json中,我把它放在:
"externally_connectable": {
"matches": ["http://www.example.com/index.html"]
},
"web_accessible_resources": [
"/*"
],
"content_scripts" : [
{
"matches" : ["http://www.example.com/index.html"],
"js": ["index.js"]
}
],
我的网站的iframe:
<iframe src="chrome-extension://myextensionid/index.html"></iframe>
在我的扩展index.js文件中,只有两个按钮。它们的函数(JavaScript)与.cc文件(通过NaCl)进行通信,以将字符串保存或加载到计算机上的文件中。
正如我所说,扩展程序运行正常,但当我尝试通过iframe在我的网站上加载它时,它只加载html(可视化)。只要JS使用NaCl调用C ++函数,JavaScript就不会加载C ++,因此也不会加载。
任何解决方案?
答案 0 :(得分:3)
<embed name="nacl_module" id="nacl_module" width="100%" height="100%" path src="//storage.googleapis.com/gonacl/demos/publish/236779/voronoi/voronoi.nmf" type="application/x-pnacl">
以上标记位于此iframe中:
<iframe frameborder="0" width="100%" height="100%" src="/static/voronoi/index.html">
这是https://gonativeclient.appspot.com/demo/voronoi
https://gonativeclient.appspot.com/static/voronoi/example.js还包含如何完成的脚本。
我已经完成了10分钟的搜索。只是要知道NaCl不适用于其他浏览器。
如果您想要适用于所有浏览器的纯JavaScript。请使用下面的代码段。它会创建一个链接,当您单击它时,它会下载一个包含text
数据的文本文件。
添加“.innerHTML”属性,如“保存”,然后您可以单击它。 HTML5 对长属性没有限制。
var file = document.createElement('a');
file.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
file.setAttribute('download', filename);
您可以从多行文本框中设置text
变量,并使用更新其值的键事件。文件名也是如此,例如“已保存的draft.txt”。除text / plain之外,您还可以尝试其他类型的数据。要检查其他类型,请在其数据字段中搜索标题。
对于文件加载,您可以查看此http://www.html5rocks.com/en/tutorials/file/dndfiles/