6

我有一个网站和一个谷歌浏览器扩展。该扩展使用NaCl API(JavaScript)从用户计算机写入/读取文件(C++)。如何在我的网站中使用Chrome扩展功能(NaCl)?

我的问题是:我可以加载我的扩展到我的网站,例如,在一个iFrame中,并保持其功能?

我试过这样做,但它只加载扩展“可视”部分。写/读(NaCl)功能不起作用。

一个例子,以更好地解释什么是我想要做的:

它的实际工作是这样的: enter image description here

我想这样做: enter image description here

或者这是另一种方式,但我认为这是不可能的,是吗? enter image description here

这可能吗?我该怎么做?

编辑

下面是代码:

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

图形可以帮助别人,但我无法解析它。为什么不发布代码示例,以便其他人可以重现您所看到的问题? – sowbug

+0

@sowbug - 我更新了我的问题。 – Dehumanizer

+0

您是否尝试在content_scripts中添加“all_frames”:true? –

回答

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变量从多文本框,并与更新其值的KeyEvent设置。文件名也是如此,例如“Saved draft.txt”。除了text/plain之外,您还可以尝试其他类型的数据。要检查其他类型,请搜索标题可以在其数据字段中执行的操作。

对于文件加载,你可以检查此http://www.html5rocks.com/en/tutorials/file/dndfiles/

相关问题