JavaScript で文字列の高さを測定できるかどうかを調べようとしています。このコードは C# にありますが、Javascript でも取得できるかどうかを確認したいと思います。過去の SO を調べたところ、これが答えとして見つかりました (リンクはありません):
function get_tex_height(txt, font) {
this.element = document.createElement('canvas');
this.context = this.element.getContext('2d');
this.context.font = font;
return this.context.measureText(txt).height;
}
何らかの理由で、これは機能しません。どうして?あなたは尋ねるかもしれません。何も思いつきません。私も知る由もありません。私はモバイル アプリの HTML を書き換えていますが、UIWebView
私が持っているあらゆる種類のデバッグ方法はalert(somethinghere)
. JS が機能しない場合、コードの実行を継続しないだけで、どこで失敗したかわかりません。
そのため、フォント、フォント サイズ、幅の制約を渡して、この文字列がレンダリングされたときに正確な高さを取得できるかどうかを確認したいと思います。これが可能であるとしても、私が結論付け始めていることは不可能です。これには、C# メソッドを使用する必要があるかもしれません。
レンダリングして測定するには、DOM にアタッチする必要があります。以下に示すように、ページに表示せずにそれを行うことができます。
function getTextHeight(text, font)
{
var cvs, ctx, body, h;
cvs = document.createElement('canvas');
ctx = cvs.getContext('2d');
cvs.style.display = "none";
body = document.getElementsByTagName("BODY")[0];
body.appendChild(cvs);
ctx.font = font;
h = ctx.measureText(text).height;
body.removeChild(cvs);
return h;
}
それがうまくいくかどうか教えてください。まだバグがあるかもしれません。明らかに、これは持っていない何もそれはDOMに直接挿入された場合は、テキストの高さと関係するが。取得する高さは、キャンバスにレンダリングされたテキストの高さです。DOM の高さについては、コンテナの幅に基づいてラッピングを考慮に入れた別の操作を行う必要があります...
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加