2016-04-09 10 views
0

Ich benutze d3.js, und um die Stringgröße zu berechnen, füge ich zuerst die Zeichenfolge an das DOM an und rufe textContainer.node().getBBox() an, um seine Breite und Höhe zu erhalten.Errechnen Stringgröße ohne render

Aber es ist möglich, die String-Größe ohne Rendering String mit d3.js oder eine andere js-Bibliothek zu erhalten?

+0

Das Rendern des DOM wird nur passieren, * nachdem * Ihr aktueller Code auf dem Aufruf-Stack erfolgt ist. Wenn Sie den Text zum DOM hinzufügen, erhalten Sie die Bounding Box und entfernen Sie sie direkt danach, es wird nie gerendert werden. – altocumulus

+0

Das mache ich tatsächlich. Aber ich habe viel Text zu berechnen, es ist nicht wirklich optimiert. Es dauerte 20 Sekunden, um eine Seite zu rendern:/ – 03t02

+0

Da es nicht gerendert wird ... was ist dann deine Frage? – altocumulus

Antwort

0

Es gibt ctx.measureText Funktion genau dafür, beachten Sie, dass Sie Schriftart, Größe usw. (wie in CSS) angeben müssen, um korrekte Ausgabe zu erhalten, und das Ergebnis kann Sub-Pixel sein.

+0

Ich lese gerade die Dokumentation. Es scheint diese Funktion funktioniert nur auf Tag rechts? Hast du eine Funktion für ? – 03t02

+0

Nein, es gibt keine, jedoch können Sie eine Leinwand über Javascript erstellen und NICHT an das Dokument anhängen, damit es nicht gerendert wird. Es tut uns leid, aber es gibt keine Möglichkeit, die Zeichenfolgenbreite zu testen, ohne als Leinwand gerendert zu werden. – Akxe