mirror of
https://github.com/jquery/jquery.git
synced 2024-11-23 02:54:22 +00:00
Core: use interactive to evaluate dom ready, barring IE9-10
Fixes gh-2100
This commit is contained in:
parent
87bd130289
commit
dabd5ba96c
@ -70,10 +70,10 @@ jQuery.ready.promise = function( obj ) {
|
||||
|
||||
// Catch cases where $(document).ready() is called
|
||||
// after the browser event has already occurred.
|
||||
// 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.readyState === "complete" ) {
|
||||
// Support: IE9-10 only
|
||||
// Older IE sometimes signals "interactive" too soon
|
||||
if ( document.readyState === "complete" ||
|
||||
( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
|
||||
|
||||
// Handle it asynchronously to allow scripts the opportunity to delay ready
|
||||
window.setTimeout( jQuery.ready );
|
||||
|
23
test/data/event/interactiveReady.html
Normal file
23
test/data/event/interactiveReady.html
Normal file
@ -0,0 +1,23 @@
|
||||
<!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 gh-2100</title>
|
||||
<script src="../../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>
|
||||
</body>
|
||||
</html>
|
@ -2518,6 +2518,18 @@ testIframeWithCallback(
|
||||
}
|
||||
);
|
||||
|
||||
// need PHP here to make the incepted IFRAME hang
|
||||
if ( hasPHP ) {
|
||||
testIframeWithCallback(
|
||||
"jQuery.ready uses interactive",
|
||||
"event/interactiveReady.html",
|
||||
function( isOk, assert ) {
|
||||
assert.expect( 1 );
|
||||
assert.ok( isOk, "jQuery fires ready when the DOM can truly be interacted with" );
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
testIframeWithCallback(
|
||||
"Focusing iframe element",
|
||||
"event/focusElem.html",
|
||||
|
Loading…
Reference in New Issue
Block a user