Skip to content

Commit

Permalink
Landing pull request 586. Create exports.js for exporting jQuery to w…
Browse files Browse the repository at this point in the history
…indow and AMD. Fixes #10687.

More Details:
 - jquery#586
 - http://bugs.jquery.com/ticket/10687
  • Loading branch information
jrburke authored and timmywil committed Nov 14, 2011
1 parent 499d7e4 commit 8bc60ba
Show file tree
Hide file tree
Showing 7 changed files with 35 additions and 24 deletions.
3 changes: 2 additions & 1 deletion Makefile
Expand Up @@ -27,7 +27,8 @@ BASE_FILES = ${SRC_DIR}/core.js\
${SRC_DIR}/ajax/xhr.js\
${SRC_DIR}/effects.js\
${SRC_DIR}/offset.js\
${SRC_DIR}/dimensions.js
${SRC_DIR}/dimensions.js\
${SRC_DIR}/exports.js

MODULES = ${SRC_DIR}/intro.js\
${BASE_FILES}\
Expand Down
14 changes: 0 additions & 14 deletions src/core.js
Expand Up @@ -934,20 +934,6 @@ function doScrollCheck() {
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;

})();
22 changes: 22 additions & 0 deletions src/exports.js
@@ -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 );
3 changes: 1 addition & 2 deletions src/outro.js
@@ -1,3 +1,2 @@
// Expose jQuery to the global object
window.jQuery = window.$ = jQuery;

})( window );
2 changes: 2 additions & 0 deletions test/index.html
Expand Up @@ -28,6 +28,7 @@
<script src="../src/effects.js"></script>
<script src="../src/offset.js"></script>
<script src="../src/dimensions.js"></script>
<script src="../src/exports.js"></script>

<script src="data/versioncheck.js"></script>

Expand All @@ -51,6 +52,7 @@
<script src="unit/effects.js"></script>
<script src="unit/offset.js"></script>
<script src="unit/dimensions.js"></script>
<script src="unit/exports.js"></script>

<script>
// html5shiv, enabling HTML5 elements to be used with jQuery
Expand Down
8 changes: 1 addition & 7 deletions test/unit/core.js
Expand Up @@ -225,12 +225,6 @@ test("browser", function() {
});
}

test("amdModule", function() {
expect(1);

equal( jQuery, amdDefined, "Make sure defined module matches jQuery" );
});

test("noConflict", function() {
expect(7);

Expand Down Expand Up @@ -534,7 +528,7 @@ test("isXMLDoc - HTML", function() {

test("XSS via location.hash", function() {
expect(1);

stop();
jQuery._check9521 = function(x){
ok( x, "script called from #id-like selector with inline handler" );
Expand Down
7 changes: 7 additions & 0 deletions test/unit/exports.js
@@ -0,0 +1,7 @@
module("exports", { teardown: moduleTeardown });

test("amdModule", function() {
expect(1);

equal( jQuery, amdDefined, "Make sure defined module matches jQuery" );
});

0 comments on commit 8bc60ba

Please sign in to comment.