mirror of
https://github.com/jquery/jquery.git
synced 2024-11-23 02:54:22 +00:00
Update sizzle; Add sizzle cache collision iframe test. Fixes #8539.
This commit is contained in:
parent
3ad0ba62f0
commit
8723f3b9e1
@ -1 +1 @@
|
|||||||
Subproject commit 3ffd629e38c3a1cc31febc010718c985a4f85a4d
|
Subproject commit f56f1784961a63f4118e43b1441ffc2f32ef5d41
|
@ -2,28 +2,28 @@
|
|||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
|
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
|
||||||
<title>jQuery selector</title>
|
<title>jQuery selector - attributes</title>
|
||||||
|
|
||||||
<script src="../../src/core.js"></script>
|
<script src="../../../src/core.js"></script>
|
||||||
<script src="../../src/callbacks.js"></script>
|
<script src="../../../src/callbacks.js"></script>
|
||||||
<script src="../../src/deferred.js"></script>
|
<script src="../../../src/deferred.js"></script>
|
||||||
<script src="../../src/support.js"></script>
|
<script src="../../../src/support.js"></script>
|
||||||
<script src="../../src/data.js"></script>
|
<script src="../../../src/data.js"></script>
|
||||||
<script src="../../src/queue.js"></script>
|
<script src="../../../src/queue.js"></script>
|
||||||
<script src="../../src/attributes.js"></script>
|
<script src="../../../src/attributes.js"></script>
|
||||||
<script src="../../src/event.js"></script>
|
<script src="../../../src/event.js"></script>
|
||||||
<script src="../../src/sizzle/sizzle.js"></script>
|
<script src="../../../src/sizzle/sizzle.js"></script>
|
||||||
<script src="../../src/sizzle-jquery.js"></script>
|
<script src="../../../src/sizzle-jquery.js"></script>
|
||||||
<script src="../../src/traversing.js"></script>
|
<script src="../../../src/traversing.js"></script>
|
||||||
<script src="../../src/manipulation.js"></script>
|
<script src="../../../src/manipulation.js"></script>
|
||||||
<script src="../../src/css.js"></script>
|
<script src="../../../src/css.js"></script>
|
||||||
<script src="../../src/ajax.js"></script>
|
<script src="../../../src/ajax.js"></script>
|
||||||
<script src="../../src/ajax/jsonp.js"></script>
|
<script src="../../../src/ajax/jsonp.js"></script>
|
||||||
<script src="../../src/ajax/script.js"></script>
|
<script src="../../../src/ajax/script.js"></script>
|
||||||
<script src="../../src/ajax/xhr.js"></script>
|
<script src="../../../src/ajax/xhr.js"></script>
|
||||||
<script src="../../src/effects.js"></script>
|
<script src="../../../src/effects.js"></script>
|
||||||
<script src="../../src/offset.js"></script>
|
<script src="../../../src/offset.js"></script>
|
||||||
<script src="../../src/dimensions.js"></script>
|
<script src="../../../src/dimensions.js"></script>
|
||||||
|
|
||||||
<script id="script1"
|
<script id="script1"
|
||||||
defer
|
defer
|
40
test/data/selector/sizzle_cache.html
Normal file
40
test/data/selector/sizzle_cache.html
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
|
||||||
|
<title>jQuery selector - sizzle cache</title>
|
||||||
|
|
||||||
|
<script src="http://code.jquery.com/jquery-git.js"></script>
|
||||||
|
<script>
|
||||||
|
var $git = jQuery.noConflict(true);
|
||||||
|
</script>
|
||||||
|
<script src="../../../src/core.js"></script>
|
||||||
|
<script src="../../../src/callbacks.js"></script>
|
||||||
|
<script src="../../../src/deferred.js"></script>
|
||||||
|
<script src="../../../src/support.js"></script>
|
||||||
|
<script src="../../../src/data.js"></script>
|
||||||
|
<script src="../../../src/queue.js"></script>
|
||||||
|
<script src="../../../src/attributes.js"></script>
|
||||||
|
<script src="../../../src/event.js"></script>
|
||||||
|
<script src="../../../src/sizzle/sizzle.js"></script>
|
||||||
|
<script src="../../../src/sizzle-jquery.js"></script>
|
||||||
|
<script src="../../../src/traversing.js"></script>
|
||||||
|
<script src="../../../src/manipulation.js"></script>
|
||||||
|
<script src="../../../src/css.js"></script>
|
||||||
|
<script src="../../../src/ajax.js"></script>
|
||||||
|
<script src="../../../src/ajax/jsonp.js"></script>
|
||||||
|
<script src="../../../src/ajax/script.js"></script>
|
||||||
|
<script src="../../../src/ajax/xhr.js"></script>
|
||||||
|
<script src="../../../src/effects.js"></script>
|
||||||
|
<script src="../../../src/offset.js"></script>
|
||||||
|
<script src="../../../src/dimensions.js"></script>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div class="test">
|
||||||
|
<a href="#" id="collision">Worlds collide</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -17,7 +17,7 @@ var testIframe = function( fileName, name, fn ) {
|
|||||||
var loadFixture = function() {
|
var loadFixture = function() {
|
||||||
|
|
||||||
// Creates iframe with cache disabled
|
// Creates iframe with cache disabled
|
||||||
var src = "./data/" + fileName + ".html?" + parseInt( Math.random()*1000, 10 ),
|
var src = "./data/selector/" + fileName + ".html?" + parseInt( Math.random()*1000, 10 ),
|
||||||
iframe = jQuery("<iframe />").css({
|
iframe = jQuery("<iframe />").css({
|
||||||
width: 500, height: 500, position: "absolute", top: -600, left: -600, visibility: "hidden"
|
width: 500, height: 500, position: "absolute", top: -600, left: -600, visibility: "hidden"
|
||||||
}).appendTo("body")[0];
|
}).appendTo("body")[0];
|
||||||
@ -38,7 +38,7 @@ var testIframe = function( fileName, name, fn ) {
|
|||||||
// continue
|
// continue
|
||||||
start();
|
start();
|
||||||
// call actual tests passing the correct jQuery instance to use
|
// call actual tests passing the correct jQuery instance to use
|
||||||
fn.call( this, win.jQuery, win );
|
fn.call( this, win.jQuery, win, win.document );
|
||||||
document.body.removeChild( iframe );
|
document.body.removeChild( iframe );
|
||||||
iframe = null;
|
iframe = null;
|
||||||
}
|
}
|
||||||
@ -46,23 +46,21 @@ var testIframe = function( fileName, name, fn ) {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
testIframe("selector", "attributes - jQuery.attr", function( jQuery, window ) {
|
testIframe("html5_selector", "attributes - jQuery.attr", function( jQuery, window, document ) {
|
||||||
expect(34);
|
expect(34);
|
||||||
|
|
||||||
var document = window.document;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns an array of elements with the given IDs, eg.
|
* Returns an array of elements with the given IDs, eg.
|
||||||
*/
|
*/
|
||||||
var q = function() {
|
function q() {
|
||||||
var r = [];
|
var r = [],
|
||||||
|
i = 0;
|
||||||
for ( var i = 0; i < arguments.length; i++ ) {
|
|
||||||
r.push( document.getElementById( arguments[i] ) );
|
for ( ; i < arguments.length; i++ ) {
|
||||||
}
|
r.push( document.getElementById( arguments[i] ) );
|
||||||
|
}
|
||||||
return r;
|
return r;
|
||||||
};
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Asserts that a select matches the given IDs * @example t("Check for something", "//[a]", ["foo", "baar"]);
|
* Asserts that a select matches the given IDs * @example t("Check for something", "//[a]", ["foo", "baar"]);
|
||||||
@ -70,15 +68,17 @@ testIframe("selector", "attributes - jQuery.attr", function( jQuery, window ) {
|
|||||||
* @param {String} b - Sizzle selector
|
* @param {String} b - Sizzle selector
|
||||||
* @param {String} c - Array of ids to construct what is expected
|
* @param {String} c - Array of ids to construct what is expected
|
||||||
*/
|
*/
|
||||||
var t = function( a, b, c ) {
|
function t( a, b, c ) {
|
||||||
var f = jQuery(b).get(), s = "";
|
var f = jQuery(b).get(),
|
||||||
|
s = "",
|
||||||
|
i = 0;
|
||||||
|
|
||||||
for ( var i = 0; i < f.length; i++ ) {
|
for ( ; i < f.length; i++ ) {
|
||||||
s += (s && ",") + '"' + f[i].id + '"';
|
s += (s && ",") + '"' + f[i].id + '"';
|
||||||
}
|
}
|
||||||
|
|
||||||
deepEqual(f, q.apply( q, c ), a + " (" + b + ")");
|
deepEqual(f, q.apply( q, c ), a + " (" + b + ")");
|
||||||
};
|
}
|
||||||
|
|
||||||
// ====== All known boolean attributes, including html5 booleans ======
|
// ====== All known boolean attributes, including html5 booleans ======
|
||||||
// autobuffer, autofocus, autoplay, async, checked,
|
// autobuffer, autofocus, autoplay, async, checked,
|
||||||
@ -131,3 +131,12 @@ testIframe("selector", "attributes - jQuery.attr", function( jQuery, window ) {
|
|||||||
|
|
||||||
t( "Improperly named form elements do not interfere with form selections (#9570)", "form[name='formName']", ["form1"]);
|
t( "Improperly named form elements do not interfere with form selections (#9570)", "form[name='formName']", ["form1"]);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
testIframe("sizzle_cache", "Sizzle cache collides with multiple Sizzles on a page", function( jQuery, window, document ) {
|
||||||
|
var $git = window.$git;
|
||||||
|
|
||||||
|
expect(3);
|
||||||
|
deepEqual( $git('.test a').get(), [ document.getElementById('collision') ], "Select collision anchor with first sizzle" );
|
||||||
|
equal( jQuery('.evil a').length, 0, "Select nothing with second sizzle" );
|
||||||
|
equal( jQuery('.evil a').length, 0, "Select nothing again with second sizzle" );
|
||||||
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user