jQuery .trim() IE浏览器兼容性问题

6

我在Firefox、Opera、Chrome、Safari和IE中进行了测试。它们都可以正常工作,除了我测试的三个IE版本:8、7和6。

// truncate testimonial 
var visiblePara = $('div.bannerUnder p.show');
if (visiblePara.text().trim().length > 150) {
    var text = visiblePara.text().trim();
    var author = $('div.bannerUnder p.show > strong').text();
    text = text.substr(0, 150) + "...";
    visiblePara.text(text).append("<strong>" + author + "</strong>");
}

它说:

对象不支持此属性或方法,并指向此行:

if (visiblePara.text().trim().length > 150) {

可能出现的问题是什么?

@Patrick:length是一个属性,不是一个函数。 - Matt Ball
@Chuck:您将标题更改为“jQuery .length IE浏览器兼容性问题”,但这不是关于.length的问题-它是关于在IE 8版本之前不可用的.trim()。 - rsp
好的,我会将函数更改为.trim(),但我试图让问题标题保留在他最初提问的背景下。 - Chuck Callebs
2个回答

19

尝试进行以下更改:

visiblePara.text().trim().length

收件人:

$.trim(visiblePara.text()).length

你甚至可以将文本变量向上移动,例如:

// truncate testimonial 
var visiblePara = $('div.bannerUnder p.show');
var text = $.trim(visiblePara.text());
if (text.length > 150) {
    var author = $('div.bannerUnder p.show > strong').text();
    text = text.substr(0, 150) + "...";
    visiblePara.text(text).append("<strong>" + author + "</strong>");
}

4

在 IE8 之前,trim 不是 String.prototype 的一个方法。但是它已经存在于其他浏览器中一段时间了。

我在 IE8 中尝试了它,结果它对我有效。可以使用 jQuery.trim() jQuery.trim(str) 替代。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接