Landing pull request 586. Create exports.js for exporting jQuery to window and AMD. Fixes #10687.

More Details:
 - https://github.com/jquery/jquery/pull/586
 - http://bugs.jquery.com/ticket/10687
This commit is contained in:
jrburke 2011-11-14 12:13:25 -05:00 committed by timmywil
parent 499d7e409c
commit 8bc60bab5d
7 changed files with 35 additions and 24 deletions

View File

@ -27,7 +27,8 @@ BASE_FILES = ${SRC_DIR}/core.js\
${SRC_DIR}/ajax/xhr.js\ ${SRC_DIR}/ajax/xhr.js\
${SRC_DIR}/effects.js\ ${SRC_DIR}/effects.js\
${SRC_DIR}/offset.js\ ${SRC_DIR}/offset.js\
${SRC_DIR}/dimensions.js ${SRC_DIR}/dimensions.js\
${SRC_DIR}/exports.js
MODULES = ${SRC_DIR}/intro.js\ MODULES = ${SRC_DIR}/intro.js\
${BASE_FILES}\ ${BASE_FILES}\

View File

@ -934,20 +934,6 @@ function doScrollCheck() {
jQuery.ready(); jQuery.ready();
} }
// Expose jQuery as an AMD module, but only for AMD loaders that
// understand the issues with loading multiple versions of jQuery
// in a page that all might call define(). The loader will indicate
// they have special allowances for multiple jQuery versions by
// specifying define.amd.jQuery = true. Register as a named module,
// since jQuery can be concatenated with other files that may use define,
// but not use a proper concatenation script that understands anonymous
// AMD modules. A named AMD is safest and most robust way to register.
// Lowercase jquery is used because AMD module names are derived from
// file names, and jQuery is normally delivered in a lowercase file name.
if ( typeof define === "function" && define.amd && define.amd.jQuery ) {
define( "jquery", [], function () { return jQuery; } );
}
return jQuery; return jQuery;
})(); })();

22
src/exports.js Normal file
View File

@ -0,0 +1,22 @@
(function( jQuery ) {
// Expose jQuery to the global object
window.jQuery = window.$ = jQuery;
// Expose jQuery as an AMD module, but only for AMD loaders that
// understand the issues with loading multiple versions of jQuery
// in a page that all might call define(). The loader will indicate
// they have special allowances for multiple jQuery versions by
// specifying define.amd.jQuery = true. Register as a named module,
// since jQuery can be concatenated with other files that may use define,
// but not use a proper concatenation script that understands anonymous
// AMD modules. A named AMD is safest and most robust way to register.
// Lowercase jquery is used because AMD module names are derived from
// file names, and jQuery is normally delivered in a lowercase file name.
// Do this after creating the global so that if an AMD module wants to call
// noConflict to hide this version of jQuery, it will work.
if ( typeof define === "function" && define.amd && define.amd.jQuery ) {
define( "jquery", [], function () { return jQuery; } );
}
})( jQuery );

View File

@ -1,3 +1,2 @@
// Expose jQuery to the global object
window.jQuery = window.$ = jQuery;
})( window ); })( window );

View File

@ -28,6 +28,7 @@
<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 src="../src/exports.js"></script>
<script src="data/versioncheck.js"></script> <script src="data/versioncheck.js"></script>
@ -51,6 +52,7 @@
<script src="unit/effects.js"></script> <script src="unit/effects.js"></script>
<script src="unit/offset.js"></script> <script src="unit/offset.js"></script>
<script src="unit/dimensions.js"></script> <script src="unit/dimensions.js"></script>
<script src="unit/exports.js"></script>
<script> <script>
// html5shiv, enabling HTML5 elements to be used with jQuery // html5shiv, enabling HTML5 elements to be used with jQuery

View File

@ -225,12 +225,6 @@ test("browser", function() {
}); });
} }
test("amdModule", function() {
expect(1);
equal( jQuery, amdDefined, "Make sure defined module matches jQuery" );
});
test("noConflict", function() { test("noConflict", function() {
expect(7); expect(7);
@ -534,7 +528,7 @@ test("isXMLDoc - HTML", function() {
test("XSS via location.hash", function() { test("XSS via location.hash", function() {
expect(1); expect(1);
stop(); stop();
jQuery._check9521 = function(x){ jQuery._check9521 = function(x){
ok( x, "script called from #id-like selector with inline handler" ); ok( x, "script called from #id-like selector with inline handler" );

7
test/unit/exports.js Normal file
View File

@ -0,0 +1,7 @@
module("exports", { teardown: moduleTeardown });
test("amdModule", function() {
expect(1);
equal( jQuery, amdDefined, "Make sure defined module matches jQuery" );
});