Skip to content
Permalink
Browse files

Fix #13282: QtWebKit (e.g., phantomjs) can only apply Arrays

  • Loading branch information...
gibson042 committed Jan 25, 2013
1 parent f39ca22 commit fb0f2952929fbe0e8a39da8c7865a397c7e74835
Showing with 12 additions and 4 deletions.
  1. +12 −4 src/manipulation.js
@@ -303,7 +303,9 @@ jQuery.fn.extend({

// Keep references to cloned scripts for later restoration
if ( hasScripts ) {
core_push.apply( scripts, getAll( node, "script" ) );
// Support: QtWebKit
// jQuery.merge because core_push.apply(_, arraylike) throws
jQuery.merge( scripts, getAll( node, "script" ) );
}
}

@@ -369,7 +371,9 @@ jQuery.each({
elems = i === last ? this : this.clone( true );
jQuery( insert[ i ] )[ original ]( elems );

core_push.apply( ret, elems );
// Support: QtWebKit
// .get() because core_push.apply(_, arraylike) throws
core_push.apply( ret, elems.get() );
}

return this.pushStack( ret );
@@ -433,7 +437,9 @@ jQuery.extend({

// Add nodes directly
if ( jQuery.type( elem ) === "object" ) {
core_push.apply( nodes, elem.nodeType ? [ elem ] : elem );
// Support: QtWebKit
// jQuery.merge because core_push.apply(_, arraylike) throws
jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );

// Convert non-html into a text node
} else if ( !rhtml.test( elem ) ) {
@@ -454,7 +460,9 @@ jQuery.extend({
tmp = tmp.firstChild;
}

core_push.apply( nodes, tmp.childNodes );
// Support: QtWebKit
// jQuery.merge because core_push.apply(_, arraylike) throws
jQuery.merge( nodes, tmp.childNodes );

// Remember the top-level container
tmp = fragment.firstChild;

1 comment on commit fb0f295

@jdalton

This comment has been minimized.

Copy link
Member

commented on fb0f295 Apr 18, 2013

Good news is the perf cost isn't bad http://jsperf.com/jquery-merge-vs-push-apply/2#chart=bar.

Please sign in to comment.
You can’t perform that action at this time.