6

Ich habe eine Website und eine Google Chrome-Erweiterung. Die Erweiterung verwendet die NaCl-API (JavaScript) zum Schreiben/Lesen von Dateien (C++) vom Computer des Benutzers.Wie funktioniert die Chrome Extension-Funktion (NaCl) auf meiner Website?

Meine Frage ist: Kann ich meine Erweiterung in meiner Website laden, zum Beispiel in einem iFrame und behalten Sie ihre Funktionen?

Ich habe versucht, es zu tun, aber es lädt nur die Erweiterung "visueller" Teil. Die Schreib/Lese (NaCl) -Funktionen funktionierten nicht.

Ein Beispiel besser zu erklären, was ich tun will:

Es ist auf diese Weise tatsächlich arbeiten: enter image description here

Ich möchte, dies zu tun: enter image description here

Or das ist ein anderer Weg, aber ich denke, es ist nicht möglich, oder? enter image description here

Ist es möglich? Wie kann ich es tun?

EDIT

Hier ist der Code:

In manifest.json ich dies gesagt:

"externally_connectable": { 
    "matches": ["http://www.example.com/index.html"] 
}, 

"web_accessible_resources": [ 
    "/*" 
], 
"content_scripts" : [ 
    { 
     "matches" : ["http://www.example.com/index.html"], 
     "js": ["index.js"] 
    } 
], 

Meine Website Iframe:

<iframe src="chrome-extension://myextensionid/index.html"></iframe> 

In meiner Erweiterung index.js Datei hat nur zwei Tasten. Ihre Funktionen (JavaScript) kommunizieren mit der .cc-Datei (über NaCl), um eine Zeichenfolge in einer Datei auf dem Computer zu speichern oder zu laden.

Wie gesagt, die Erweiterung funktioniert gut, aber wenn ich versuche, es auf meiner Website über ein Iframe zu laden, lädt es nur das HTML (visuell). Das JavaScript lädt folglich auch nicht C++, solange JS die C++ - Funktionen mit NaCl aufruft.

Irgendeine Lösung?

+0

Die Grafik jemand anderes helfen könnte, aber ich habe Probleme es Parsen haben. Warum veröffentlichen Sie kein Codebeispiel, damit andere das angezeigte Problem reproduzieren können? – sowbug

+0

@sowbug - Ich habe meine Frage aktualisiert. – Dehumanizer

+0

hast du versucht, "all_frames" hinzuzufügen: true in den content_scripts? –

Antwort

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"> 

Und der oben genannte Tag ist in diesem iframe:

<iframe frameborder="0" width="100%" height="100%" src="/static/voronoi/index.html"> 

Dies ist von https://gonativeclient.appspot.com/demo/voronoi

Auch die https://gonativeclient.appspot.com/static/voronoi/example.js das Skript enthält, wie das getan wird.

Ich habe 10 Minuten Suche, um das zu finden. Nur zu wissen, NaCl wird nicht auf anderen Browsern funktionieren.

Wenn Sie reines Javascript wollen, das auf allen Browsern funktioniert. Verwenden Sie dieses Codefragment unten. Es erstellt einen Link, der beim Klicken darauf eine Textdatei herunterlädt, die die Daten text enthält. Fügen Sie ein `.innerHTML 'Attribut wie" Speichern "hinzu und klicken Sie darauf.HTML5 hat keine Grenzen für lange Attribute.

var file = document.createElement('a'); 
file.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text)); 
file.setAttribute('download', filename); 

können Sie haben die text Variable aus einem mehrzeiligen Textfeld und mit einem KeyEvent, was dessen Wert aktualisiert eingestellt werden. Gleiches gilt für den Dateinamen, z. "Gespeicherte draft.txt". Sie können mit anderen Datentypen auch anders als text/plain experimentieren. Um die anderen Typen zu überprüfen, suchen Sie nach dem Inhalt eines Headers in seinem Datenfeld.

Für Datei laden können Sie dies überprüfen http://www.html5rocks.com/en/tutorials/file/dndfiles/