extjs4对象不支持属性或方法'indexOf'IE 8解决方法问题

时间:2012-12-12 21:30:27

标签: javascript extjs internet-explorer-8 extjs4.1

我的用户定义排序功能在IE 8中不起作用。

Object不支持属性或方法'indexOf'

roles_store.sort([{
    sorterFn: function(v1, v2) {
    var order = ['read-only', 'user', 'admin', 'super'],
        v1o   = order.indexOf(v1.get('role_name')),
        v2o   = order.indexOf(v2.get('role_name'));           

        return v1o < v2o ? -1 : 1;; 
    }
}]);

以下链接显示了一种解决方法: How to fix Array indexOf() in JavaScript for Internet Explorer browsers

我尝试用Array.prototype.indexOf替换indexof

v2o = order.Array.prototype.indexOf(v2.get('role_name'));

如果我错过了这里的话,我道歉

2 个答案:

答案 0 :(得分:1)

使用Ext.Array.indexOf,它尽可能遵循原生indexOf。

http://docs.sencha.com/ext-js/4-1/#!/api/Ext.Array-method-indexOf

答案 1 :(得分:1)

IE 8有点旧,它包含一个旧的javascript版本。它没有我们日常使用的许多非常有用的方法。我建议包含微小的数组原型扩展库(link)。该库允许您使用所有新浏览器(具有较新的javascript版本)的所有方法(对于数组)。

您也可以像Evan建议的那样使用Extjs方法(它们运行良好)但是您必须始终牢记这一点,并且您在Internet或此站点中找到的大多数代码段和代码示例都不会运行(你将不得不翻译它们以使用extjs方法)。另一个问题是,如果你不小心,你的代码在Chrome和FF中可以正常工作,但在IE中则不行。

包含我推荐你的扩展程序要简单得多,安全得多,这就是我们在自己的项目中所做的,这是一个很好的解决方案。