add nodelist type check
This commit is contained in:
parent
b0000b5169
commit
9aca80c3cb
1 changed files with 32 additions and 21 deletions
|
@ -337,24 +337,35 @@ Ox.typeOf <f> Returns the type of a value
|
|||
Ox.typeOf = function(value) {
|
||||
return Object.prototype.toString.call(value).slice(8, -1).toLowerCase();
|
||||
};
|
||||
(function() {
|
||||
// Firefox 3.6 returns 'Object' instead of 'Arguments',
|
||||
// Internet Explorer 8 returns 'Object' instead of 'NodeList',
|
||||
// Internet Explorer 9 returns 'HTMLCollection' instead of 'NodeList',
|
||||
// Mobile Safari doesn't like null and undefined
|
||||
var nodelist = Ox.typeOf(document.getElementsByTagName('a'));
|
||||
if (
|
||||
Ox.typeOf(arguments) != 'arguments'
|
||||
&& nodelist != 'nodelist'
|
||||
|| Ox.typeOf(document.getElementsByTagName('a')) != 'nodelist'
|
||||
|| Ox.typeOf(null) != 'null'
|
||||
|| Ox.typeOf() != 'undefined'
|
||||
) {
|
||||
Ox.typeOf = function(value) {
|
||||
var type = value && Ox.hasOwn(value, 'callee') ? 'arguments'
|
||||
: value === null ? 'null'
|
||||
: value === void 0 ? 'undefined'
|
||||
: Object.prototype.toString.call(
|
||||
var ret = Object.prototype.toString.call(
|
||||
value
|
||||
).slice(8, -1).toLowerCase();
|
||||
return type == nodelist ? 'nodelist' : type;
|
||||
if (typeof value.callee == 'function') {
|
||||
ret = arguments;
|
||||
} else if (
|
||||
ret == 'htmlcollection' || (
|
||||
typeof value == 'object'
|
||||
&& typeof value.item != 'undefined'
|
||||
&& typeof value.length == 'number'
|
||||
)
|
||||
) {
|
||||
ret = 'nodelist'
|
||||
} else if (value === null) {
|
||||
ret = 'null';
|
||||
} else if (value === void 0) {
|
||||
ret = 'undefined'
|
||||
}
|
||||
return ret;
|
||||
};
|
||||
}
|
||||
})();
|
||||
|
|
Loading…
Reference in a new issue