Added some polyfills for old browsers
This commit is contained in:
parent
0b78b2885e
commit
07ee5497bc
11 changed files with 69 additions and 13 deletions
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1057,4 +1057,48 @@ Component.prototype = {
|
|||
}
|
||||
};
|
||||
|
||||
/*
|
||||
* The following polyfills provide ES5.1 functionality that's missing in older browsers (eg, IE8),
|
||||
* allowing PCjs apps to run without slamming into exceptions; however, due to the lack of HTML5 canvas
|
||||
* support in those browsers, all you're likely to see are "soft" errors (eg, "Missing <canvas> support").
|
||||
*
|
||||
* Perhaps we can implement a text-only faux video display for a fun retro-browser experience someday.
|
||||
*
|
||||
* TODO: Come up with a better place to put these polyfills. We will likely have more if we decide to
|
||||
* make the leap from ES5.1 to ES6 features.
|
||||
*/
|
||||
|
||||
/*
|
||||
* See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf
|
||||
*/
|
||||
if (!Array.prototype.indexOf) {
|
||||
Array.prototype.indexOf = function(obj, start) {
|
||||
for (var i = (start || 0), j = this.length; i < j; i++) {
|
||||
if (this[i] === obj) { return i; }
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind
|
||||
*/
|
||||
if (!Function.prototype.bind) {
|
||||
Function.prototype.bind = function(obj) {
|
||||
if (typeof this != "function") {
|
||||
// Closest thing possible to the ECMAScript 5 internal IsCallable function
|
||||
throw new TypeError("Function.prototype.bind: non-callable object");
|
||||
}
|
||||
var args = Array.prototype.slice.call(arguments, 1);
|
||||
var fToBind = this;
|
||||
var fnNOP = /** @constructor */ (function() {});
|
||||
var fnBound = function() {
|
||||
return fToBind.apply(this instanceof fnNOP && obj? this : obj, args.concat(Array.prototype.slice.call(arguments)));
|
||||
};
|
||||
fnNOP.prototype = this.prototype;
|
||||
fnBound.prototype = new fnNOP();
|
||||
return fnBound;
|
||||
};
|
||||
}
|
||||
|
||||
if (NODE) module.exports = Component;
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Loading…
Reference in a new issue