mirror of
https://github.com/jquery/jquery.git
synced 2025-01-10 18:24:24 +00:00
Scorch the earth and retreat on readyState interactive! Close gh-907.
This commit is contained in:
parent
10901f7d9f
commit
a9c2a9bf61
@ -831,9 +831,9 @@ jQuery.ready.promise = function( obj ) {
|
||||
readyList = jQuery.Deferred();
|
||||
|
||||
// Catch cases where $(document).ready() is called after the browser event has already occurred.
|
||||
// IE10 and lower don't handle "interactive" properly... use a weak inference to detect it
|
||||
// we once tried to use readyState "interactive" here, but it caused issues like the one
|
||||
// discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15
|
||||
if ( document.attachEvent ? document.readyState === "complete" : document.readyState !== "loading" ) {
|
||||
if ( document.readyState === "complete" ) {
|
||||
// Handle it asynchronously to allow scripts the opportunity to delay ready
|
||||
setTimeout( jQuery.ready, 1 );
|
||||
|
||||
|
@ -1,30 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<title>Test case for jQuery ticket #10067</title>
|
||||
<script type="text/javascript">
|
||||
setTimeout(function() {
|
||||
el = document.createElement("script");
|
||||
el.type = "text/javascript";
|
||||
el.onload = function() {
|
||||
jQuery( document ).ready(function() {
|
||||
window.parent.iframeCallback( jQuery('#container').length === 1 );
|
||||
});
|
||||
}
|
||||
document.getElementsByTagName("head")[ 0 ].appendChild( el );
|
||||
el.src = "../../../dist/jquery.js";
|
||||
}, 1000 );
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<!-- external resources that come before elements trick
|
||||
oldIE into thinking the dom is ready, but it's not... -->
|
||||
<script type="text/javascript" src="longLoadScript.php?sleep=1"></script>
|
||||
<div id="container" style="height: 300px"></div>
|
||||
|
||||
<!-- long loading iframe -->
|
||||
<iframe src="longLoad.php?sleep=15&return=false" style="width: 1px; height: 1px"></iframe>
|
||||
</body>
|
||||
</html>
|
@ -1,6 +0,0 @@
|
||||
<?php
|
||||
sleep((int)$_GET['sleep']);
|
||||
?>
|
||||
<script type="text/javascript">
|
||||
window.parent.parent.iframeCallback(<?php echo $_GET['return'];?>);
|
||||
</script>
|
@ -1,40 +0,0 @@
|
||||
<?php
|
||||
//try very hard to disable output buffering
|
||||
//@ini_set("output_buffering", 0);
|
||||
//@apache_setenv("no-gzip", 1);
|
||||
//@ini_set("zlib.output_compression", 0);
|
||||
ob_start();
|
||||
?>
|
||||
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<title>Test case for jQuery ticket #12282</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<h1>TEST</h1>
|
||||
<script type="text/javascript" src="../../../dist/jquery.js"></script>
|
||||
<script type="text/javascript">
|
||||
jQuery( document ).ready(function() {
|
||||
window.parent.iframeCallback( jQuery('#container').length === 1 );
|
||||
});
|
||||
</script>
|
||||
|
||||
<?php
|
||||
//send the top of the document without sending the bottom portion
|
||||
echo str_repeat(" ", 1024 * 8), "\n";
|
||||
ob_flush();
|
||||
?>
|
||||
|
||||
<h2>Sleeping for 1 seconds (simulating server side process)</h2>
|
||||
|
||||
<?php
|
||||
//sleep for a bit, simulating a server side process
|
||||
sleep(1);
|
||||
?>
|
||||
|
||||
<div id="container">ready</h2>
|
||||
</body>
|
||||
</html>
|
@ -1,26 +0,0 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||
<title>Test case for jQuery ticket #10067</title>
|
||||
<script type="text/javascript" src="../../../dist/jquery.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<script type="text/javascript">
|
||||
jQuery( document ).ready(function () {
|
||||
window.parent.iframeCallback( jQuery('#container').length === 1 );
|
||||
});
|
||||
</script>
|
||||
|
||||
<!-- external resources that come before elements trick
|
||||
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>
|
||||
<div id="container" style="height: 300px"></div>
|
||||
|
||||
<!-- long loading iframe -->
|
||||
<iframe src="longLoad.php?sleep=10&return=false" style="width: 1px; height: 1px"></iframe>
|
||||
</body>
|
||||
</html>
|
@ -2882,39 +2882,17 @@ test("fixHooks extensions", function() {
|
||||
jQuery.event.fixHooks.click = saved;
|
||||
});
|
||||
|
||||
|
||||
// async loaded tests expect jQuery to be loaded as a single file
|
||||
// if we're not doing PHP concat, then we fall back to document.write
|
||||
// which breaks order of execution on async loaded files
|
||||
// also need PHP to make the incepted IFRAME hang
|
||||
if ( hasPHP ) {
|
||||
testIframeWithCallback( "jQuery.ready promise", "event/promiseReady.html", function( isOk ) {
|
||||
expect(1);
|
||||
ok( isOk, "$.when( $.ready ) works" );
|
||||
});
|
||||
|
||||
// need PHP here to make the incepted IFRAME hang
|
||||
if ( hasPHP ) {
|
||||
testIframeWithCallback( "jQuery.ready synchronous load with long loading subresources", "event/syncReady.html", function( isOk ) {
|
||||
expect(1);
|
||||
ok( isOk, "jQuery loaded synchronously fires ready when the DOM can truly be interacted with" );
|
||||
});
|
||||
|
||||
testIframeWithCallback( "jQuery.ready synchronous load with partially loaded page", "event/partialLoadReady.php", function( isOk ) {
|
||||
expect(1);
|
||||
ok( isOk, "jQuery loaded synchronously fires ready when the DOM can truly be interacted with" );
|
||||
});
|
||||
|
||||
// allIE needs all subresources and full page to be loaded before it can gaurantee the document is truly ready to be interacted with
|
||||
if( !document.attachEvent ) {
|
||||
testIframeWithCallback( "jQuery.ready synchronous load with long loading iframe", "event/syncReadyLongLoad.html", function( isOk ) {
|
||||
expect(1);
|
||||
ok( isOk, "jQuery loaded synchronously fires ready before all sub-resources are loaded" );
|
||||
});
|
||||
|
||||
testIframeWithCallback( "jQuery.ready asynchronous load with long loading iframe", "event/asyncReady.html", function( isOk ) {
|
||||
expect(1);
|
||||
ok( isOk, "jQuery loaded asynchronously fires ready before all sub-resources are loaded" );
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
(function(){
|
||||
|
Loading…
Reference in New Issue
Block a user