Merge pull request #1398 from marcelklehr/fix/html10n-ie8-array.indexOf

Fix Array.prototype.indexOf for IE8! <3
This commit is contained in:
John McLear 2013-01-23 08:49:15 -08:00
commit 28aa1ecc24

View file

@ -21,6 +21,8 @@
* IN THE SOFTWARE.
*/
window.html10n = (function(window, document, undefined) {
// fix console
var console = window.console
function interceptConsole(method){
if (!console) return function() {}
@ -44,6 +46,39 @@ window.html10n = (function(window, document, undefined) {
, consoleError = interceptConsole('warn')
// fix Array.prototype.instanceOf in, guess what, IE! <3
if (!Array.prototype.indexOf) {
Array.prototype.indexOf = function (searchElement /*, fromIndex */ ) {
"use strict";
if (this == null) {
throw new TypeError();
}
var t = Object(this);
var len = t.length >>> 0;
if (len === 0) {
return -1;
}
var n = 0;
if (arguments.length > 1) {
n = Number(arguments[1]);
if (n != n) { // shortcut for verifying if it's NaN
n = 0;
} else if (n != 0 && n != Infinity && n != -Infinity) {
n = (n > 0 || -1) * Math.floor(Math.abs(n));
}
}
if (n >= len) {
return -1;
}
var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0);
for (; k < len; k++) {
if (k in t && t[k] === searchElement) {
return k;
}
}
return -1;
}
}
/**
* MicroEvent - to make any js object an event emitter (server or browser)