IE8在使用filter()方法的行上显示错误:"对象不支持此属性或方法"

cat*_*use 3 javascript methods jquery internet-explorer-8

我正在使用此脚本来限制textarea上第1-3行的字符.它适用于Firefox和Chrome.但在IE8中,它在使用filter()方法的行上显示错误:"对象不支持此属性或方法".

这是代码:

var result = jQuery('#result');
var my_textarea = jQuery('#mytext');
my_textarea.on('keyup', function(event){
    var el = jQuery(this);
    var lines = el.val().split('\n').length;
    var chars = el.val().split('').filter(function(v){
        return v != '\n';
    }).length;    
    result.html('You have ' + lines + ' lines and ' + chars + ' chars');    

    if ((lines === 1 && chars > 20) || (lines === 2 && chars > 40) || (lines === 3 && chars > 60)) {
          my_textarea.val( my_textarea.val() + "\n");
    }
});
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

SLa*_*aks 10

IE8不支持Array.filter方法.
MDN有替代品.


Nie*_*sol 5

filter(以及其他一些方法Array)相对较新,并没有在旧版浏览器中实现 - 不仅仅是IE8,而是老版本的Firefox.

您可能对array_filterPHPJS感兴趣,因为这会产生相同的效果.

然后再看一下你的代码,这不会更简单吗?

var chars = el.val().replace(/\n/g,'').length;
Run Code Online (Sandbox Code Playgroud)