Skip to content

Commit

Permalink
Fixing getting/setting classes and makeArray(RegExp) for Blackberry 4…
Browse files Browse the repository at this point in the history
….7. Fixes #6930, #6931.
  • Loading branch information
jeresig committed Aug 23, 2010
1 parent 6f031c1 commit 396dd21
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 17 deletions.
3 changes: 2 additions & 1 deletion src/attributes.js
Expand Up @@ -278,7 +278,8 @@ jQuery.extend({
}

// If applicable, access the attribute via the DOM 0 way
if ( name in elem && notxml && !special ) {
// 'in' checks fail in Blackberry 4.7 #6931
if ( (name in elem || elem[ name ] !== undefined) && notxml && !special ) {
if ( set ) {
// We can't allow the type property to be changed (since it causes problems in IE)
if ( name === "type" && rtype.test( elem.nodeName ) && elem.parentNode ) {
Expand Down
3 changes: 2 additions & 1 deletion src/core.js
Expand Up @@ -594,7 +594,8 @@ jQuery.extend({
// The window, strings (and functions) also have 'length'
// The extra typeof function check is to prevent crashes
// in Safari 2 (See: #3039)
if ( array.length == null || typeof array === "string" || jQuery.isFunction(array) || (typeof array !== "function" && array.setInterval) ) {
// Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930
if ( array.length == null || typeof array === "string" || jQuery.isFunction(array) || typeof array === "function" || typeof array.setInterval !== "undefined" ) {

This comment has been minimized.

Copy link
@jeresig

jeresig Aug 25, 2010

Author Member

Getting weird errors in WebKit with this error. Will be investigating further tomorrow morning.

push.call( ret, array );
} else {
jQuery.merge( ret, array );
Expand Down
43 changes: 28 additions & 15 deletions test/unit/core.js
Expand Up @@ -258,21 +258,28 @@ test("isPlainObject", function() {

// Window
ok(!jQuery.isPlainObject(window), "window");

var iframe = document.createElement("iframe");
document.body.appendChild(iframe);

window.iframeDone = function(otherObject){
// Objects from other windows should be matched
ok(jQuery.isPlainObject(new otherObject), "new otherObject");
try {
var iframe = document.createElement("iframe");
document.body.appendChild(iframe);

window.iframeDone = function(otherObject){
// Objects from other windows should be matched
ok(jQuery.isPlainObject(new otherObject), "new otherObject");
document.body.removeChild( iframe );
start();
};

var doc = iframe.contentDocument || iframe.contentWindow.document;
doc.open();
doc.write("<body onload='window.parent.iframeDone(Object);'>");
doc.close();
} catch(e) {
document.body.removeChild( iframe );

ok(true, "new otherObject - iframes not supported");
start();
};

var doc = iframe.contentDocument || iframe.contentWindow.document;
doc.open();
doc.write("<body onload='window.parent.iframeDone(Object);'>");
doc.close();
}
});

test("isFunction", function() {
Expand Down Expand Up @@ -374,9 +381,15 @@ test("isXMLDoc - HTML", function() {

try {
var body = jQuery(iframe).contents()[0];
ok( !jQuery.isXMLDoc( body ), "Iframe body element" );
} catch(e){
ok( false, "Iframe body element exception" );

try {
ok( !jQuery.isXMLDoc( body ), "Iframe body element" );
} catch(e) {
ok( false, "Iframe body element exception" );
}

} catch(e) {
ok( true, "Iframe body element - iframe not working correctly" );
}

document.body.removeChild( iframe );
Expand Down

0 comments on commit 396dd21

Please sign in to comment.