diff options
author | Oleg Gaidarenko <markelog@gmail.com> | 2014-06-16 01:45:24 +0400 |
---|---|---|
committer | Oleg Gaidarenko <markelog@gmail.com> | 2014-06-16 03:21:39 +0400 |
commit | 37f0f7f42cd158e36665066d88708ca4aa0713ac (patch) | |
tree | ba8ed0593fd4ce0a41eaf1b443263304dd6a1986 /test | |
parent | 76294e1e9e25665b22467c099ed406402f784e2a (diff) | |
download | jquery-37f0f7f42cd158e36665066d88708ca4aa0713ac.tar.gz jquery-37f0f7f42cd158e36665066d88708ca4aa0713ac.zip |
Ajax: Always use script injection in globalEval
Fixes #14757
Ref bbdfbb4ee859fe9319b348d88120ddc2c9efbd63
Diffstat (limited to 'test')
-rw-r--r-- | test/data/event/syncReady.html | 4 | ||||
-rw-r--r-- | test/data/longLoadScript.php (renamed from test/data/event/longLoadScript.php) | 0 | ||||
-rw-r--r-- | test/unit/ajax.js | 30 | ||||
-rw-r--r-- | test/unit/core.js | 13 | ||||
-rw-r--r-- | test/unit/manipulation.js | 38 |
5 files changed, 51 insertions, 34 deletions
diff --git a/test/data/event/syncReady.html b/test/data/event/syncReady.html index e0885707e..0d2f8fdad 100644 --- a/test/data/event/syncReady.html +++ b/test/data/event/syncReady.html @@ -8,7 +8,7 @@ <body> <script type="text/javascript"> -jQuery( document ).ready(function () { +jQuery( document ).ready(function() { window.parent.iframeCallback( jQuery('#container').length === 1 ); }); </script> @@ -17,7 +17,7 @@ jQuery( document ).ready(function () { oldIE into thinking the dom is ready, but it's not... leaving this check here for future trailblazers to attempt fixing this...--> -<script type="text/javascript" src="longLoadScript.php?sleep=1"></script> +<script type="text/javascript" src="../longLoadScript.php?sleep=1"></script> <div id="container" style="height: 300px"></div> </body> </html> diff --git a/test/data/event/longLoadScript.php b/test/data/longLoadScript.php index ba47168b4..ba47168b4 100644 --- a/test/data/event/longLoadScript.php +++ b/test/data/longLoadScript.php diff --git a/test/unit/ajax.js b/test/unit/ajax.js index 97372c5a0..d2059bd36 100644 --- a/test/unit/ajax.js +++ b/test/unit/ajax.js @@ -1468,24 +1468,18 @@ module( "ajax", { } }); - test( "#11743 - jQuery.ajax() - script, throws exception", 1, function() { - throws(function() { - jQuery.ajax({ - url: "data/badjson.js", - dataType: "script", - "throws": true, - // TODO find a way to test this asynchronously, too - async: false, - // Global events get confused by the exception - global: false, - success: function() { - ok( false, "Success." ); - }, - error: function() { - ok( false, "Error." ); - } - }); - }, "exception bubbled" ); + asyncTest( "#11743 - jQuery.ajax() - script, throws exception", 1, function() { + var onerror = window.onerror; + window.onerror = function() { + ok( true, "Exception thrown" ); + window.onerror = onerror; + start(); + }; + jQuery.ajax({ + url: "data/badjson.js", + dataType: "script", + "throws": true + }); }); jQuery.each( [ "method", "type" ], function( _, globalOption ) { diff --git a/test/unit/core.js b/test/unit/core.js index ef49999e6..d59c4b0fa 100644 --- a/test/unit/core.js +++ b/test/unit/core.js @@ -214,6 +214,19 @@ test( "globalEval", function() { equal( window.globalEvalTest, 3, "Test context (this) is the window object" ); }); +test( "globalEval execution after script injection (#7862)", 1, function() { + var now, + script = document.createElement( "script" ); + + script.src = "data/longLoadScript.php?sleep=2"; + + now = jQuery.now(); + document.body.appendChild( script ); + + jQuery.globalEval( "var strictEvalTest = " + jQuery.now() + ";"); + ok( window.strictEvalTest - now < 500, "Code executed synchronously" ); +}); + test("noConflict", function() { expect(7); diff --git a/test/unit/manipulation.js b/test/unit/manipulation.js index ad90df923..e2bfd75b1 100644 --- a/test/unit/manipulation.js +++ b/test/unit/manipulation.js @@ -2263,23 +2263,33 @@ test( "Ensure oldIE creates a new set on appendTo (#8894)", function() { strictEqual( jQuery("<p/>").appendTo("<div/>").end().length, jQuery("<p>test</p>").appendTo("<div/>").end().length, "Elements created with createElement and with createDocumentFragment should be treated alike" ); }); -test( "html() - script exceptions bubble (#11743)", function() { +asyncTest( "html() - script exceptions bubble (#11743)", 2, function() { - expect( 2 ); + var onerror = window.onerror; - throws(function() { - jQuery("#qunit-fixture").html("<script>undefined(); ok( false, 'Exception not thrown' );</script>"); - ok( false, "Exception ignored" ); - }, "Exception bubbled from inline script" ); + setTimeout(function() { + window.onerror = onerror; - if ( jQuery.ajax ) { - throws(function() { - jQuery("#qunit-fixture").html("<script src='data/badcall.js'></script>"); - ok( false, "Exception ignored" ); - }, "Exception thrown in remote script" ); - } else { - ok( true, "No jQuery.ajax" ); - } + start(); + }, 1000 ); + + window.onerror = function() { + ok( true, "Exception thrown" ); + + if ( jQuery.ajax ) { + window.onerror = function() { + ok( true, "Exception thrown in remote script" ); + }; + + jQuery( "#qunit-fixture" ).html( "<script src='data/badcall.js'></script>" ); + ok( true, "Exception ignored" ); + } else { + ok( true, "No jQuery.ajax" ); + ok( true, "No jQuery.ajax" ); + } + }; + + jQuery( "#qunit-fixture" ).html( "<script>undefined();</script>" ); }); test( "checked state is cloned with clone()", function() { |