2011-11-29 87 views
2

我發現了奇怪的下面的代碼:SCRIPT438:對象不支持屬性或方法「鍵」的IE

var allextRules = Ext.util.CSS.getRules(); 

Object.keys(allextRules).forEach(function(key) { 
    var keyname = key; 
    if(keyname.indexOf("js") != -1){ 
     Ext.util.CSS.removeStyleSheet(keyname); 
     console.log(keyname + " Removed"); 
    } 
}); 

當上述工作在其他瀏覽測試(比方說 - 谷歌瀏覽器),有沒有錯誤。然而,在IE 9中測試時,存在誤差如下:

SCRIPT438: Object doesn't support property or method 'keys' 

根據這篇文章(https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/keys),則Object.keys由IE支持。

我錯過了什麼嗎?

+0

你有ie9在ie9瀏覽器模式在開發工具欄? – thiswayup

+1

此外,您是否嘗試通過您提供的鏈接的「兼容性」部分中的代碼來定義該功能?即使IE9確實支持密鑰方法,但自己定義它並不會造成傷害。如果它仍然不起作用,那麼你對你的問題有了更好的理解 – phatskat

回答

3

在方法 '的forEach'(錯誤script438:對象不支持此屬性或方法 'foreEach',在IE 9), 的soluction是:

if (!Array.prototype.forEach) { 
    Array.prototype.forEach = function(fun /*, thisp*/) 
    { 
    var len = this.length; 
    if (typeof fun != "function") 
     throw new TypeError(); 
    var thisp = arguments[1]; 
    for (var i = 0; i < len; i++) 
    { 
     if (i in this) 
     fun.call(thisp, this[i], i, this); 
    } 
    }; 
} 

字體:http://www.tutorialspoint.com/javascript/array_foreach.htm

10

嘗試之前,你的

if (!Object.keys) { 
    Object.keys = (function() { 
    var hasOwnProperty = Object.prototype.hasOwnProperty, 
     hasDontEnumBug = !({toString: null}).propertyIsEnumerable('toString'), 
     dontEnums = [ 
      'toString', 
      'toLocaleString', 
      'valueOf', 
      'hasOwnProperty', 
      'isPrototypeOf', 
      'propertyIsEnumerable', 
      'constructor' 
     ], 
     dontEnumsLength = dontEnums.length; 

    return function (obj) { 
     if (typeof obj !== 'object' && typeof obj !== 'function' || obj === null) throw new TypeError('Object.keys called on non-object'); 

     var result = []; 

     for (var prop in obj) { 
     if (hasOwnProperty.call(obj, prop)) result.push(prop); 
     } 

     if (hasDontEnumBug) { 
     for (var i=0; i < dontEnumsLength; i++) { 
      if (hasOwnProperty.call(obj, dontEnums[i])) result.push(dontEnums[i]); 
     } 
     } 
     return result; 
    } 
    })() 
}; 

這裏添加此代碼是關於此問題的更多細節 - https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Object/keys

+0

我剛剛將上面的代碼添加到腳本的頂部,需要hasOwnProperty方法,IE 8立即開始工作。謝謝!!! –

+1

一點都不!很高興它適用於您;) – vladymy

+0

爲我工作,謝謝 –

相關問題