Landing fixes for tickets #2935 and #2688 (Aborting ajax doesn't stop the setInterval...
[jquery.git] / src / core.js
index 9279d17..081c5b4 100644 (file)
@@ -407,7 +407,7 @@ jQuery.fn = jQuery.prototype = {
                        if ( this.nodeType != 1 )
                                return;
 
-                       if ( value.constructor == Array && /radio|checkbox/.test( this.type ) )
+                       if ( jQuery.isArray(value) && /radio|checkbox/.test( this.type ) )
                                this.checked = (jQuery.inArray(this.value, value) >= 0 ||
                                        jQuery.inArray(this.name, value) >= 0);
 
@@ -621,6 +621,10 @@ jQuery.extend({
        isFunction: function( fn ) {
                return !!fn && !!fn.hasOwnProperty && fn instanceof Function;
        },
+       
+       isArray: function( arr ){
+               return !!arr && arr.constructor == Array;
+       },
 
        // check if an element is in a (or is an) XML document
        isXMLDoc: function( elem ) {
@@ -1129,15 +1133,13 @@ jQuery.extend({
                return (text || "").replace( /^\s+|\s+$/g, "" );
        },
 
-       // NOTE: Due to the conflict with Scriptaculous (http://dev.jquery.com/ticket/3248)
-       // We remove support for functions since jQuery 1.3
        makeArray: function( array ) {
                var ret = [];
 
                if( array != null ){
                        var i = array.length;
                        // The window, strings (and functions) also have 'length'
-                       if( i == null || typeof array == 'string' || array.setInterval )
+                       if( i == null || typeof array == 'string' || jQuery.isFunction(array) || array.setInterval )
                                ret[0] = array;
                        else
                                while( i )
@@ -1345,7 +1347,7 @@ jQuery.each([ "Height", "Width" ], function(i, name){
                // Get window width or height
                return this[0] == window ?
                        // Opera reports document.body.client[Width/Height] properly in both quirks and standards
-                       jQuery.browser.opera && document.body[ "client" + name ] ||
+                       jQuery.browser.opera && document.body.parentNode[ "client" + name ] ||
 
                        // Safari reports inner[Width/Height] just fine (Mozilla and Opera include scroll bar widths)
                        jQuery.browser.safari && window[ "inner" + name ] ||