Skip to content

Commit

Permalink
Added a fix and test for bug #978 (Appending elements into an IFrame,…
Browse files Browse the repository at this point in the history
… in IE).
  • Loading branch information
jeresig committed Mar 24, 2007
1 parent 7ad613c commit 0f7c89c
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 10 deletions.
1 change: 1 addition & 0 deletions build/test/index.html
Expand Up @@ -79,6 +79,7 @@ <h2 id="userAgent"></h2>
</object> </object>
</form> </form>
<b id="floatTest">Float test.</b> <b id="floatTest">Float test.</b>
<iframe id="iframe"></iframe>
</div> </div>
</dl> </dl>


Expand Down
12 changes: 11 additions & 1 deletion src/jquery/coreTest.js
Expand Up @@ -316,7 +316,7 @@ test("wrap(String|Element)", function() {
}); });


test("append(String|Element|Array&lt;Element&gt;|jQuery)", function() { test("append(String|Element|Array&lt;Element&gt;|jQuery)", function() {
expect(11); expect(12);
var defaultText = 'Try them out:' var defaultText = 'Try them out:'
var result = $('#first').append('<b>buga</b>'); var result = $('#first').append('<b>buga</b>');
ok( result.text() == defaultText + 'buga', 'Check if text appending works' ); ok( result.text() == defaultText + 'buga', 'Check if text appending works' );
Expand Down Expand Up @@ -353,6 +353,16 @@ test("append(String|Element|Array&lt;Element&gt;|jQuery)", function() {
reset(); reset();
$("#sap").append(document.getElementById('form')); $("#sap").append(document.getElementById('form'));
ok( $("#sap>form").size() == 1, "Check for appending a form" ); // Bug #910 ok( $("#sap>form").size() == 1, "Check for appending a form" ); // Bug #910

reset();
var pass = true;
try {
$( $("iframe")[0].contentWindow.document.body ).append("<div>test</div>");
} catch(e) {
pass = false;
}

ok( pass, "Test for appending a DOM node to the contents of an IFrame" );


}); });


Expand Down
21 changes: 14 additions & 7 deletions src/jquery/jquery.js
Expand Up @@ -614,10 +614,13 @@ jQuery.fn = jQuery.prototype = {
*/ */
wrap: function() { wrap: function() {
// The elements to wrap the target around // The elements to wrap the target around
var a = jQuery.clean(arguments); var a, args = arguments;


// Wrap each of the matched elements individually // Wrap each of the matched elements individually
return this.each(function(){ return this.each(function(){
if ( !a )
a = jQuery.clean(args, this.ownerDocument);

// Clone the structure that we're using to wrap // Clone the structure that we're using to wrap
var b = a[0].cloneNode(true); var b = a[0].cloneNode(true);


Expand Down Expand Up @@ -1121,12 +1124,15 @@ jQuery.fn = jQuery.prototype = {
* @cat Core * @cat Core
*/ */
domManip: function(args, table, dir, fn){ domManip: function(args, table, dir, fn){
var clone = this.length > 1; var clone = this.length > 1, a;
var a = jQuery.clean(args);
if ( dir < 0 )
a.reverse();


return this.each(function(){ return this.each(function(){
if ( !a ) {
a = jQuery.clean(args, this.ownerDocument);
if ( dir < 0 )
a.reverse();
}

var obj = this; var obj = this;


if ( table && jQuery.nodeName(this, "table") && jQuery.nodeName(a[0], "tr") ) if ( table && jQuery.nodeName(this, "table") && jQuery.nodeName(a[0], "tr") )
Expand Down Expand Up @@ -1440,8 +1446,9 @@ jQuery.extend({
return ret; return ret;
}, },


clean: function(a) { clean: function(a, doc) {
var r = []; var r = [];
doc = doc || document;


jQuery.each( a, function(i,arg){ jQuery.each( a, function(i,arg){
if ( !arg ) return; if ( !arg ) return;
Expand All @@ -1452,7 +1459,7 @@ jQuery.extend({
// Convert html string into DOM nodes // Convert html string into DOM nodes
if ( typeof arg == "string" ) { if ( typeof arg == "string" ) {
// Trim whitespace, otherwise indexOf won't work as expected // Trim whitespace, otherwise indexOf won't work as expected
var s = jQuery.trim(arg), div = document.createElement("div"), tb = []; var s = jQuery.trim(arg), div = doc.createElement("div"), tb = [];


var wrap = var wrap =
// option or optgroup // option or optgroup
Expand Down
4 changes: 2 additions & 2 deletions src/selector/selectorTest.js
Expand Up @@ -144,8 +144,8 @@ test("expressions - basic xpath", function() {
t( "Attribute Exists", "//a[@title]", ["google"] ); t( "Attribute Exists", "//a[@title]", ["google"] );
t( "Attribute Equals", "//a[@rel='bookmark']", ["simon1"] ); t( "Attribute Equals", "//a[@rel='bookmark']", ["simon1"] );
t( "Parent Axis", "//p/..", ["main","foo"] ); t( "Parent Axis", "//p/..", ["main","foo"] );
t( "Sibling Axis", "//p/../", ["firstp","ap","foo","first","firstUL","empty","form","floatTest","sndp","en","sap"] ); t( "Sibling Axis", "//p/../", ["firstp","ap","foo","first","firstUL","empty","form","floatTest","iframe","sndp","en","sap"] );
t( "Sibling Axis", "//p/../*", ["firstp","ap","foo","first","firstUL","empty","form","floatTest","sndp","en","sap"] ); t( "Sibling Axis", "//p/../*", ["firstp","ap","foo","first","firstUL","empty","form","floatTest","iframe","sndp","en","sap"] );
t( "Has Children", "//p[a]", ["firstp","ap","en","sap"] ); t( "Has Children", "//p[a]", ["firstp","ap","en","sap"] );


$("#foo").each(function() { $("#foo").each(function() {
Expand Down

0 comments on commit 0f7c89c

Please sign in to comment.