1
+ var isIE8 = / m s i e 8 \. 0 / i. test ( window . navigator . userAgent ) ;
2
+
1
3
module ( "ajax" , {
2
4
setup : function ( ) {
5
+ if ( ! isIE8 ) {
6
+ return ;
7
+ }
8
+
3
9
var jsonpCallback = this . jsonpCallback = jQuery . ajaxSettings . jsonpCallback ;
4
10
jQuery . ajaxSettings . jsonpCallback = function ( ) {
5
11
var callback = jsonpCallback . apply ( this , arguments ) ;
@@ -737,7 +743,7 @@ module( "ajax", {
737
743
}
738
744
] ) ;
739
745
740
- ajaxTest ( "jQuery.ajax() - JSONP - Explicit callback param" + label , 9 , {
746
+ ajaxTest ( "jQuery.ajax() - JSONP - Explicit callback param" + label , 10 , {
741
747
setup : function ( ) {
742
748
Globals . register ( "functionToCleanUp" ) ;
743
749
Globals . register ( "XXX" ) ;
@@ -760,6 +766,11 @@ module( "ajax", {
760
766
crossDomain : crossDomain ,
761
767
jsonpCallback : "jsonpResults" ,
762
768
success : function ( data ) {
769
+ strictEqual (
770
+ typeof window [ "jsonpResults" ] ,
771
+ "function" ,
772
+ "should not rewrite original function"
773
+ ) ;
763
774
ok ( data . data , "JSON results returned (GET, custom callback name)" ) ;
764
775
}
765
776
} , {
@@ -1372,16 +1383,34 @@ module( "ajax", {
1372
1383
] ) ;
1373
1384
1374
1385
jQuery . each ( [ " - Same Domain" , " - Cross Domain" ] , function ( crossDomain , label ) {
1375
- ajaxTest ( "#8205 - jQuery.ajax() - JSONP - re-use callbacks name" + label , 2 , {
1386
+ ajaxTest ( "#8205 - jQuery.ajax() - JSONP - re-use callbacks name" + label , 4 , {
1376
1387
url : "data/jsonp.php" ,
1377
1388
dataType : "jsonp" ,
1378
1389
crossDomain : crossDomain ,
1379
1390
beforeSend : function ( jqXHR , s ) {
1380
1391
s . callback = s . jsonpCallback ;
1392
+
1393
+ ok ( this . callback in window , "JSONP callback name is in the window" ) ;
1381
1394
} ,
1382
1395
success : function ( ) {
1383
1396
var previous = this ;
1384
- strictEqual ( previous . jsonpCallback , undefined , "jsonpCallback option is set back to default in callbacks" ) ;
1397
+
1398
+ strictEqual (
1399
+ previous . jsonpCallback ,
1400
+ undefined ,
1401
+ "jsonpCallback option is set back to default in callbacks"
1402
+ ) ;
1403
+
1404
+ if ( isIE8 ) {
1405
+ ok ( true , "IE8 can't remove property from the window" ) ;
1406
+
1407
+ } else {
1408
+ ok (
1409
+ ! ( this . callback in window ) ,
1410
+ "JSONP callback name was removed from the window"
1411
+ ) ;
1412
+ }
1413
+
1385
1414
jQuery . ajax ( {
1386
1415
url : "data/jsonp.php" ,
1387
1416
dataType : "jsonp" ,
0 commit comments