Javascript 在不渲染的情况下计算字符串大小
我使用的是d3.js,为了计算字符串大小,首先我将字符串附加到DOM中,并调用Javascript 在不渲染的情况下计算字符串大小,javascript,string,d3.js,Javascript,String,D3.js,我使用的是d3.js,为了计算字符串大小,首先我将字符串附加到DOM中,并调用textContainer.node().getBBox()获取其宽度和高度 但是有可能在不使用d3.js或其他js库渲染字符串的情况下获得字符串大小?有一个函数正好用于此,请注意,您需要指定字体、大小等(如CSS)以获得正确的输出,结果可能是亚像素。我刚刚阅读了文档。这个函数似乎只在标签上工作,对吗?你有一个函数吗?不,没有,但是,你可以通过javascript创建一个画布,而不是将它附加到文档中,因此也不会呈现它。
textContainer.node().getBBox()
获取其宽度和高度
但是有可能在不使用d3.js或其他js库渲染字符串的情况下获得字符串大小?有一个函数正好用于此,请注意,您需要指定字体、大小等(如CSS)以获得正确的输出,结果可能是亚像素。我刚刚阅读了文档。这个函数似乎只在标签上工作,对吗?你有一个函数吗?不,没有,但是,你可以通过javascript创建一个画布,而不是将它附加到文档中,因此也不会呈现它。很抱歉,如果不在画布之外进行渲染,就无法测试字符串宽度。只有在完成调用堆栈上的当前代码后,才会进行DOM渲染。如果将文本添加到DOM中,获取边界框,然后立即将其移除,它将永远不会被渲染。我实际上就是这样做的。但我有很多文本要计算,它并没有真正优化。渲染一个页面花费了20秒,因为它不会被渲染。。。那你的问题是什么?我只想知道绳子的大小。但要做到这一点,我必须先渲染字符串,获得大小,然后删除这个字符串。我做那件事花了很多时间。我的问题是:不执行这些步骤就可以得到字符串的大小吗?不,不需要实际渲染字符串来获得其尺寸。只需添加、获取大小和删除即可。请记住,操作DOM和渲染是不同的事情。此操作不需要渲染。也许,您的代码还有其他问题。你可以设置一个演示,或者缩小一个来显示你的问题。