【发布时间】:2013-03-10 03:10:33
【问题描述】:
我正在尝试在我的服务器上使用以下代码来估计一些文本字段的长度,并可能在通过电子邮件发送它们之前对其进行修剪...
String.prototype.visualLength = function()
{
var element = document.createElement("span");
element.css({
"visibility": "hidden",
"white-space": "nowrap",
"font-weight": "normal",
"font-size": "18px",
"line-height": "40px",
"font-family": "Helvetica, Arial, sans-serif",
"text-decoration": "none"
});
document.body.appendChild(element);
element.innerHTML = this;
return element.offsetWidth;
};
String.prototype.trimToPx = function(length)
{
var tmp = this;
var trimmed = this;
if (tmp.visualLength() > length)
{
trimmed += "...";
while (trimmed.visualLength() > length)
{
tmp = tmp.substring(0, tmp.length-1);
trimmed = tmp + "...";
}
};
return trimmed;
};
显然我收到了一个错误,因为“文档”没有在服务器端定义。我添加了 Meteor 包 htmljs 和 domutils 希望他们可以解决这个问题,但徒劳无功。而且我无法添加 Node.js 包 jsdom,因为显然它在部署的 Meteor 应用程序中不起作用。
知道如何实现我想要做的事情吗?
【问题讨论】:
-
您通过限制文本试图达到的目标是什么? (试图理解为什么像素长度与字符长度)
-
@Rahul 不,我没有尝试过 phantomjs。不知道。只是看看......不知道如何用幻影解决这个问题。另外,它可以作为 Meteor 包提供吗?
-
@alanning 的目标是不超过我正在使用的 HTML 电子邮件模板的最大宽度。现在我正在用字符长度限制来实现它,但这是次优的(“M”比“i”宽得多,除非我使用等宽字体......)