Javascript 如何测量文档宽度适合的字符数?

Javascript 如何测量文档宽度适合的字符数?,javascript,jquery,string,Javascript,Jquery,String,我需要用JavaScript(我正在使用jQuery)编写一个函数,该函数可以知道浏览器窗口中一行中的字符数。我正在使用单空格字体来缓解这个问题,但是如果我将它推广到不同的字体会更好 我如何知道浏览器中一行将填充多少个字符?其目的是计算填充一行的字符数。您可以使用 window.innerWidth 然后你可以用下面的方法得到一个元素的宽度 document.getElemenById('elem').clientWidth 在HTML中没有简单的方法可以做到这一点 但是,如果您真的必须

我需要用JavaScript(我正在使用jQuery)编写一个函数,该函数可以知道浏览器窗口中一行中的字符数。我正在使用单空格字体来缓解这个问题,但是如果我将它推广到不同的字体会更好


我如何知道浏览器中一行将填充多少个字符?其目的是计算填充一行的字符数。

您可以使用

window.innerWidth
然后你可以用下面的方法得到一个元素的宽度

document.getElemenById('elem').clientWidth  

在HTML中没有简单的方法可以做到这一点

但是,如果您真的必须知道,您可能可以使用一些非常难看的javascript来解决这个问题:


首先,创建一个具有所需宽度的文件,输入一些字符,并以像素为单位请求其.height()。然后,不断向元素中添加字符并不断检查.height(),当您知道更改的高度已增长到适合新的文本行时。

您可以创建元素并向其添加字符,直到检测到换行,例如,通过观察
中的变化(可以使用对分算法对其进行优化)

这当然非常依赖于浏览器、系统、已安装字体和用户设置,因此每次显示页面、调整页面大小或用户更改字体大小时,您都必须计算每个文本片段的字体大小(即使是整页缩放也会引入一些一个接一个的错误,这可能会导致字符数更改)

因此,在大多数情况下,这可能是一种过激行为,如果实施不当,将导致比解决问题更多的麻烦


还有其他解决方案,例如,如果您想确保只有一行是可见的,您可以使用
空白:nowrap
溢出:隐藏
以及在某些浏览器中
文本溢出:省略号
,使文本剪切得很好。或者,如果您不想剪切文字,请使用带有
溢出:隐藏的1行高容器

您在这里想要完成什么?也许有更好的办法。HTML的流布局真的不是为这类事情设计的。这对单空间字体(windowWidth/elementWidth)有效,对吗?它不在乎,它只返回元素的witdh。这可能不是解决方案,但它可以给你一些提示…谢谢,这里有一些我没有想到的好建议:)调整浏览器大小时会发生什么?如果每次用户更改页面或调整页面大小时都要重新计算,这将对他们的资源造成巨大压力