2013-05-29 20 views
6

Tôi đang sử dụng triển khai javascript của thuật toán gzip hoạt động tốt với Firefox và Chrome. Nhưng với trình duyệt Internet Explorer Tôi đã nhận lỗi sau:JavaScript: Phương thức forEach không được hỗ trợ từ Internet Explorer

Method forEach is not supported!

Code:

deflate.deflate(data, level).forEach(function (byte) { 
    putByte(byte, out); 
}); 

Tôi đang sử dụng trình duyệt Internet Explorer 9, mà nên hỗ trợ phương pháp foreach.

Bất kỳ ý tưởng nào?

Cảm ơn bạn rất nhiều!

+1

forEach không được hỗ trợ trong IE8. IE9 nên hỗ trợ nó, tuy nhiên. http://kangax.github.io/es5-compat-table/#Array.prototype.forEach –

+2

Trang của bạn có đang chạy ở chế độ quirks trong IE không? (Có lẽ do tai nạn?) '.forEach()' chỉ được hỗ trợ trong chế độ tiêu chuẩn. Liệu 'deflate.deflate()' luôn luôn trả về một mảng? – nnnnnn

+0

Thay vì mở rộng đối tượng dựng sẵn, bạn có thể thay thế phần 'forEach' bằng vòng lặp' for' của 2 dòng. – RobG

Trả lời

17

Bạn có thể thử và mở rộng đối tượng Array cho các trình duyệt không hỗ trợ phương pháp foreach vào nó như đề xuất ở đây Array.forEach

Một ví dụ là:

if (!Array.prototype.forEach) { 
    Array.prototype.forEach = function(fn, scope) { 
     for(var i = 0, len = this.length; i < len; ++i) { 
      fn.call(scope, this[i], i, this); 
     } 
    } 
} 
+0

Điều đó chỉ hoạt động tốt! Cảm ơn nhiều! –

0

foreach không được hỗ trợ trong IE9, bạn có thể thử sử dụng jquery.
ví dụ:

$. each (function (byte) { 
    putByte(byte, out); 
}); 
+2

tôi muốn tránh việc sử dụng jquery. –