Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在不渲染的情况下计算字符串大小_Javascript_String_D3.js - Fatal编程技术网

Javascript 在不渲染的情况下计算字符串大小

Javascript 在不渲染的情况下计算字符串大小,javascript,string,d3.js,Javascript,String,D3.js,我使用的是d3.js,为了计算字符串大小,首先我将字符串附加到DOM中,并调用textContainer.node().getBBox()获取其宽度和高度 但是有可能在不使用d3.js或其他js库渲染字符串的情况下获得字符串大小?有一个函数正好用于此,请注意,您需要指定字体、大小等(如CSS)以获得正确的输出,结果可能是亚像素。我刚刚阅读了文档。这个函数似乎只在标签上工作,对吗?你有一个函数吗?不,没有,但是,你可以通过javascript创建一个画布,而不是将它附加到文档中,因此也不会呈现它。

我使用的是d3.js,为了计算字符串大小,首先我将字符串附加到DOM中,并调用
textContainer.node().getBBox()
获取其宽度和高度


但是有可能在不使用d3.js或其他js库渲染字符串的情况下获得字符串大小?

有一个函数正好用于此,请注意,您需要指定字体、大小等(如CSS)以获得正确的输出,结果可能是亚像素。

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