我想知道是否可以在 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;
}
告诉我它是否有效,可能仍然存在错误。显然,这NOTHING如果是直接插入到DOM做文字高度。您获得的高度只是画布上呈现的文本的高度。对于 DOM 中的高度,你必须做一些不同的事情,根据容器的宽度考虑包装......
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句