Javascript 字幕文本-获取屏幕边界以外的文本长度(以像素为单位)

Javascript 字幕文本-获取屏幕边界以外的文本长度(以像素为单位),javascript,jquery,html,css,viewport,Javascript,Jquery,Html,Css,Viewport,我正在尝试获取一个新闻提要的长度,该提要在页面上从一侧滚动到另一侧。我需要计算文本的宽度(以像素为单位),以确定何时在开始时重新定位 我已经将新闻提要文本包装在一个div容器中。文本具有CSS规则溢出:可见和空白:nowrap设置 但是,当我试图获取文本的长度(以像素为单位)时:我只能获得视口的最大宽度 我使用以下jQuery获取长度:$(“.scroll text”).width() 这仅达到我的浏览器的最大视口大小 是否有办法确定包含视口/屏幕外文本的文本长度(以像素为单位)? 编辑:这是我

我正在尝试获取一个新闻提要的长度,该提要在页面上从一侧滚动到另一侧。我需要计算文本的宽度(以像素为单位),以确定何时在开始时重新定位

我已经将新闻提要文本包装在一个div容器中。文本具有CSS规则
溢出:可见
空白:nowrap设置

但是,当我试图获取文本的长度(以像素为单位)时:我只能获得视口的最大宽度

我使用以下jQuery获取长度:
$(“.scroll text”).width()

这仅达到我的浏览器的最大视口大小

是否有办法确定包含视口/屏幕外文本的文本长度(以像素为单位)?

编辑:这是我的标记:


可能将此帖子标记为重复的邮件:


它不是复制品。屏幕边界外的像素长度毫无疑问。

使用您喜爱的浏览器检查元素:


我花了很长时间才找到,但也许你想在我的答案中找到类似的答案

使用此代码,您可以找到文本的宽度,并从中计算字符串的宽度

function charSizes(numChars, cssFont) {
    var span = document.createElement('span'),
        text = document.createTextNode(''),
        uia, i, j;
    span.appendChild(text);
    if (cssFont) span.style.font = cssFont;
    span.style.padding = span.style.margin = 'none';
    document.body.appendChild(span);
    numChars = (numChars || 255);
    uia = new Uint32Array(numChars * 2);
    for (j = i = 0; i < numChars; j = 2 * ++i) {
        text.data = String.fromCharCode(i);
        uia[j] = span.offsetWidth;
        uia[j + 1] = span.offsetHeight;
    }
    // free memory
    document.body.removeChild(span);
    span = text = numChars = cssFont = null;
    // output lookup function
    return function (c) {
        var i = c.charCodeAt(0) * 2;
        return {
            width: uia[i],
            height: uia[i + 1]
        };
    };
}

var defaultFont = charSizes(0xFF); // match the style of the text in your marquee
                                   // using the second parameter if necessary
函数字符大小(numChars、cssFont){
var span=document.createElement('span'),
text=document.createTextNode(“”),
uia,i,j;
span.appendChild(文本);
如果(cssFont)span.style.font=cssFont;
span.style.padding=span.style.margin='none';
document.body.appendChild(span);
numChars=(numChars | | 255);
uia=新的UINT32阵列(numChars*2);
对于(j=i=0;i
现在

var str='foobar',i,len=0;
对于(i=0;i


如果我们有更多关于标记的信息,您可能可以直接测量DOM中的#文本节点。

您可以共享HTML标记,以便我们可以看到字幕是如何实现的吗?@Shiva添加了标记链接。当我这样做时:它实际上显示了它应该获得的正确宽度。但出于某些原因:jQuery在屏幕宽度上剪切了。请告诉我们在
正文
html
、html开始标记(模板的第一行)上应用了什么css,以及是否在视口中使用了元标记。第162行出现语法错误:请删除
。下一步:您必须引用id,而不是类,请尝试
$(“#滚动文本”).width()。请分享你的结果。当我运行这个脚本时,我得到了以下错误:但是除了错误:它似乎可以工作。我还没有测试我的字幕文本。待命,对不起。似乎无法让它工作。当我尝试使用它时,我得到了一个
NaN
值。@DJZorrow
0xFF
基本上是指“前256个字符”。您是否使用非ASCII/ANSI字符(它们将超出此范围)?我使用。我使用ÆØÅ(挪威字母表中的3个结尾字符)作为附加字符。我该怎么添加这些呢?我不知道你的奶奶来自哪里。它们应该包括在内(
198
216
197
)<代码>JSON.stringify('ÆØÅ'.split('').map(defaultFont));//“[{“宽度”:13,“高度”:16},{“宽度”:11,“高度”:16},{“宽度”:9,“高度”:16}]”
var str = 'foobar', i, len = 0;
for (i = 0; i < str.length; ++i) {
    len += defaultFont(str[i]).width;
}
len; // 36 pixels on this page