Fixed #216, added several tests for ajax module and fixed more stuff revealed by those; Reverted Johns change for each (changeset 433), caused way too much trouble
This commit is contained in:
parent
ba7dc19416
commit
cb53fc02b6
4
build/test/data/test.html
Normal file
4
build/test/data/test.html
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
html text<br/>
|
||||||
|
<script type="text/javascript">foo = "foo";</script>
|
||||||
|
<script src="data/test.js"></script>
|
||||||
|
blabla
|
|
@ -46,6 +46,19 @@ jQuery.fn.extend({
|
||||||
* start();
|
* start();
|
||||||
* });
|
* });
|
||||||
*
|
*
|
||||||
|
* @test stop();
|
||||||
|
* foobar = undefined;
|
||||||
|
* foo = undefined;
|
||||||
|
* var verifyEvaluation = function() {
|
||||||
|
* ok( foobar == "bar", 'Check if script src was evaluated after load' );
|
||||||
|
* start();
|
||||||
|
* };
|
||||||
|
* $('#first').load('data/test.html', function() {
|
||||||
|
* ok( $('#first').html().match(/^html text/), 'Check content after loading html' );
|
||||||
|
* ok( foo == "foo", 'Check if script was evaluated after load' );
|
||||||
|
* setTimeout(verifyEvaluation, 600);
|
||||||
|
* });
|
||||||
|
*
|
||||||
* @name load
|
* @name load
|
||||||
* @type jQuery
|
* @type jQuery
|
||||||
* @param String url The URL of the HTML file to load.
|
* @param String url The URL of the HTML file to load.
|
||||||
|
@ -84,15 +97,11 @@ jQuery.fn.extend({
|
||||||
|
|
||||||
if ( status == "success" || !ifModified && status == "notmodified" ) {
|
if ( status == "success" || !ifModified && status == "notmodified" ) {
|
||||||
// Inject the HTML into all the matched elements
|
// Inject the HTML into all the matched elements
|
||||||
self.html(res.responseText).each( callback, [res.responseText, status] );
|
self.html(res.responseText)
|
||||||
|
|
||||||
// Execute all the scripts inside of the newly-injected HTML
|
// Execute all the scripts inside of the newly-injected HTML
|
||||||
jQuery("script", self).each(function(){
|
.evalScripts()
|
||||||
if ( this.src )
|
// Execute callback
|
||||||
jQuery.getScript( this.src );
|
.each( callback, [res.responseText, status] );
|
||||||
else
|
|
||||||
eval.call( window, this.text || this.textContent || this.innerHTML || "" );
|
|
||||||
});
|
|
||||||
} else
|
} else
|
||||||
callback.apply( self, [res.responseText, status] );
|
callback.apply( self, [res.responseText, status] );
|
||||||
|
|
||||||
|
@ -125,6 +134,16 @@ jQuery.fn.extend({
|
||||||
*/
|
*/
|
||||||
serialize: function() {
|
serialize: function() {
|
||||||
return jQuery.param( this );
|
return jQuery.param( this );
|
||||||
|
},
|
||||||
|
|
||||||
|
evalScripts: function() {
|
||||||
|
return this.find('script').each(function(){
|
||||||
|
if ( this.src )
|
||||||
|
// for some weird reason, it doesn't work if the callback is ommited
|
||||||
|
jQuery.getScript( this.src, function() {} );
|
||||||
|
else
|
||||||
|
eval.call( window, this.text || this.textContent || this.innerHTML || "" );
|
||||||
|
}).end();
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
@ -299,7 +318,6 @@ jQuery.extend({
|
||||||
* start();
|
* start();
|
||||||
* });
|
* });
|
||||||
*
|
*
|
||||||
*
|
|
||||||
* @name $.get
|
* @name $.get
|
||||||
* @type jQuery
|
* @type jQuery
|
||||||
* @param String url The URL of the page to load.
|
* @param String url The URL of the page to load.
|
||||||
|
@ -308,7 +326,7 @@ jQuery.extend({
|
||||||
* @cat AJAX
|
* @cat AJAX
|
||||||
*/
|
*/
|
||||||
get: function( url, data, callback, type, ifModified ) {
|
get: function( url, data, callback, type, ifModified ) {
|
||||||
if ( data.constructor == Function ) {
|
if ( data && data.constructor == Function ) {
|
||||||
type = callback;
|
type = callback;
|
||||||
callback = data;
|
callback = data;
|
||||||
data = null;
|
data = null;
|
||||||
|
@ -376,6 +394,10 @@ jQuery.extend({
|
||||||
* start();
|
* start();
|
||||||
* });
|
* });
|
||||||
*
|
*
|
||||||
|
* @test
|
||||||
|
* $.getScript("data/test.js");
|
||||||
|
* ok( true, "Check with single argument, can't verify" );
|
||||||
|
*
|
||||||
* @name $.getScript
|
* @name $.getScript
|
||||||
* @type jQuery
|
* @type jQuery
|
||||||
* @param String url The URL of the page to load.
|
* @param String url The URL of the page to load.
|
||||||
|
@ -383,7 +405,11 @@ jQuery.extend({
|
||||||
* @cat AJAX
|
* @cat AJAX
|
||||||
*/
|
*/
|
||||||
getScript: function( url, callback ) {
|
getScript: function( url, callback ) {
|
||||||
jQuery.get(url, callback, "script");
|
if(callback)
|
||||||
|
jQuery.get(url, null, callback, "script");
|
||||||
|
else {
|
||||||
|
jQuery.get(url, null, null, "script");
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -618,6 +644,23 @@ jQuery.extend({
|
||||||
* }
|
* }
|
||||||
* });
|
* });
|
||||||
*
|
*
|
||||||
|
* @test stop();
|
||||||
|
* foobar = undefined;
|
||||||
|
* foo = undefined;
|
||||||
|
* var verifyEvaluation = function() {
|
||||||
|
* ok( foobar == "bar", 'Check if script src was evaluated for datatype html' );
|
||||||
|
* start();
|
||||||
|
* };
|
||||||
|
* $.ajax({
|
||||||
|
* dataType: "html",
|
||||||
|
* url: "data/test.html",
|
||||||
|
* success: function(data) {
|
||||||
|
* ok( data.match(/^html text/), 'Check content for datatype html' );
|
||||||
|
* ok( foo == "foo", 'Check if script was evaluated for datatype html' );
|
||||||
|
* setTimeout(verifyEvaluation, 600);
|
||||||
|
* }
|
||||||
|
* });
|
||||||
|
*
|
||||||
* @name $.ajax
|
* @name $.ajax
|
||||||
* @type jQuery
|
* @type jQuery
|
||||||
* @param Hash prop A set of properties to initialize the request with.
|
* @param Hash prop A set of properties to initialize the request with.
|
||||||
|
@ -787,6 +830,9 @@ jQuery.extend({
|
||||||
// Get the JavaScript object, if JSON is used.
|
// Get the JavaScript object, if JSON is used.
|
||||||
if ( type == "json" ) eval( "data = " + data );
|
if ( type == "json" ) eval( "data = " + data );
|
||||||
|
|
||||||
|
// evaluate scripts within html
|
||||||
|
if ( type == "html" ) $("<div>").html(data).evalScripts();
|
||||||
|
|
||||||
return data;
|
return data;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
2
src/jquery/jquery.js
vendored
2
src/jquery/jquery.js
vendored
|
@ -1384,7 +1384,7 @@ jQuery.extend({
|
||||||
each: function( obj, fn, args ) {
|
each: function( obj, fn, args ) {
|
||||||
if ( obj.length == undefined )
|
if ( obj.length == undefined )
|
||||||
for ( var i in obj )
|
for ( var i in obj )
|
||||||
if ( fn.apply( obj[i], args || [i, obj[i]] ) === false ) break;
|
fn.apply( obj[i], args || [i, obj[i]] );
|
||||||
else
|
else
|
||||||
for ( var i = 0; i < obj.length; i++ )
|
for ( var i = 0; i < obj.length; i++ )
|
||||||
if ( fn.apply( obj[i], args || [i, obj[i]] ) === false ) break;
|
if ( fn.apply( obj[i], args || [i, obj[i]] ) === false ) break;
|
||||||
|
|
Loading…
Reference in a new issue