2010-02-10 72 views
3

我有一个包含文本的div。文本应缩短为两行,最后添加“...”以指出还有更多。
由于字体和字体大小可能因用户的不同设置而异(例如:浏览器的“文本大小”设置,不同的浏览器等),因此我需要在客户端动态执行此操作。Javascript:根据容器大小向HTML文本添加省略号

这样做的最佳策略是什么?
谢谢。

回答

2

微软开创了一些CSS功能,并且现在已经在Internet Explorer中为开发人员提供了很多CSS功能。其中一个功能是text-overflow属性,其中is now in CSS3并在Safari和Opera中具有实现。但是,Firefox仍然不支持这个功能。

对于一个跨浏览器的JavaScript实现的jQuery框架省略号功能的,你可能有兴趣在检查出的以下文章:


UPDATE:

由于jQuery不是o ption,您可能需要检查以下内容:

+0

谢谢,但我不能使用它,如果它不是跨浏览器,我们不使用jQuery。 – Nir 2010-02-10 12:32:58

+0

感谢您的链接,队友。 – Nir 2010-02-11 06:55:45

-1

您需要定义要显示的文本中的字符数。然后用for循环遍历文本,直到达到指定数量的字符,同时将已经过的字符保存到字符串变量中。一旦达到定义的字符数,for循环结束,并将字符串“...”附加到构建字符串变量。这是你的新容器文本。下面是一些代码:

nchars = 50; 
div = document.getElementById("your_div_with_text"); 
divText = div.innerHTML; 
newDivText = ""; 
for(var i = 0; i < nchars; i++){ 
    newDivText += divText[i]; 
} 
newDivText += "..."; 
div.innerHTML = newDivText; 

至于与字体和字体大小的问题,你很可能只是设置包含字体大小和字体系列CSS类,看起来最好在所有浏览器。

+1

从一个纯粹基于印刷点串“......”是不是等同于省略号字符(&hellip;或…)请考虑使用其中之一而不是“...”;) – Frozenskys 2010-02-10 10:34:48

+0

不要使用'innerHTML'属性来执行此操作。您可能最终会从结果HTML中剥离结束标记,这可能会导致严重问题。 – 2010-02-10 11:24:26

+0

谢谢,但这不是我要找的。我无法指定字符的数量,它必须是动态的。 – Nir 2010-02-10 12:33:30