diff options
-rw-r--r-- | src/core.js | 14 | ||||
-rw-r--r-- | test/data/testinit.js | 14 | ||||
-rw-r--r-- | test/unit/core.js | 6 |
3 files changed, 33 insertions, 1 deletions
diff --git a/src/core.js b/src/core.js index cee1cee45..7f30edea2 100644 --- a/src/core.js +++ b/src/core.js @@ -935,6 +935,20 @@ 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; })(); diff --git a/test/data/testinit.js b/test/data/testinit.js index c30747d09..7d566faa5 100644 --- a/test/data/testinit.js +++ b/test/data/testinit.js @@ -1,7 +1,19 @@ var jQuery = this.jQuery || "jQuery", // For testing .noConflict() $ = this.$ || "$", originaljQuery = jQuery, - original$ = $; + original$ = $, + amdDefined; + +/** + * Set up a mock AMD define function for testing AMD registration. + */ +function define(name, dependencies, callback) { + amdDefined = callback(); +} + +define.amd = { + jQuery: true +}; /** * Returns an array of elements with the given IDs, eg. diff --git a/test/unit/core.js b/test/unit/core.js index 50157fa48..0f4504a13 100644 --- a/test/unit/core.js +++ b/test/unit/core.js @@ -225,6 +225,12 @@ test("browser", function() { }); } +test("amdModule", function() { + expect(1); + + equals( jQuery, amdDefined, "Make sure defined module matches jQuery" ); +}); + test("noConflict", function() { expect(7); |