2017-03-06 5 views
6

Gibt es eine Möglichkeit, Lese-/Schreibzugriff auf DOM und/oder die WebAPIs (d. H. Vollbild-API) ohne JavaScript zu erhalten?WASM-Zugriff DOM

Ich versuche, eine grundlegende Anwendung in C zu erstellen (C-Quelle ist eigentlich das Ergebnis der Übertragung aus einer GC-Sprache). Die App, die ich gerade erstelle, wird als Desktop-App ausgeführt (sie soll noch nicht in "echten" Browsern laufen), damit ich die Umgebung (d. H. Die Layout-Engine) bei Bedarf optimieren kann.

Antwort

6

In dem WebAssembly Minimal Viable Product ist die einzige Möglichkeit, WebAssembly über Import und Export aufzurufen oder zu verlassen. In Zukunft könnte WebAssembly gain capabilities which allow the embedder expose APIs directly, in einem Browser, der dies einbetten könnte das DOM enthalten.

Imports und exports sind jedoch nicht sehr kompliziert: Aus Sicht Ihres C-Codes sehen sie einfach wie ein extern Aufruf aus, ähnlich einer DLL auf der Windows-Plattform. Sie würden wahrscheinlich den C-Code mit Emscripten kompilieren, siehe its documentation "Call JavaScript functions from C/C++" für Details, wie das funktioniert (da dies nicht die Frage ist, die Sie stellen, aber ich vermute, es ist die nächste Frage).


Es ist nicht von der Frage deutlich, wenn Sie:

  1. Wollen Sie C-Code und führen Sie es innerhalb Webassembly innerhalb einen Browser zu erstellen.
  2. Möchten C-Code kompilieren und in WebAssembly außerhalb eines Browsers ausführen.

Oder beides.

+0

Ich suche die kompilierte C laufen -> wasm Code innerhalb von Chromium Embedded Framework, so dass es in einem eingebetteten Browser ausgeführt wird. Die JS-Bridge ist nicht wirklich das, wonach ich suche, also werde ich es für jetzt überspringen und es neu überdenken, sobald es echten/nativen DOM-Zugriff bekommt. – themihai

+1

Wonach suchen Sie? Wenn Ihre Bedürfnisse nicht erfüllt sind, schlage ich vor, hier ein Problem zu stellen: https://github.com/WebAssembly/design/issues –

+0

Es ist nur, dass der JS-Teil zusätzliche Reibung erzeugt. Vielleicht ist es das wert, wenn Sie wirklich JS interlop benötigen oder wenn Web/Browser-Unterstützung obligatorisch ist, aber es ist nicht mein Fall, also der Grund, warum ich es für jetzt überspringe. Ich sehe, dass der DOM-Zugriff auf der Roadmap liegt. Sollte ich noch ein Problem auf GitHub füllen? – themihai

1

WebAssembly Leute haben noch keine gute Idee, wie JS-Objekte in WebAssembly aussehen werden, so scheint es.

Ich würde durch PR #1080, die über die Garbage Collection-Spezifikation ist in seinem eigenen Repo für jetzt abgespalten. Aber während das passiert sie das einzige sind Entfernen erwähnt der Webplattform & Interop mit JS-Objekte, die in der Spezifikation vorliegen, die beschrieben wird als:

It's more aspirational that concrete,