From acdcc6b6a25a2ccddea6b27b2a2fc2b7ef0e2116 Mon Sep 17 00:00:00 2001 From: Timmy Willison Date: Thu, 4 Jul 2013 14:00:26 -0400 Subject: Support CommonJS environments by accentuating the need for a window with a document. Fixes #13768. --- src/intro.js | 36 +++++++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) (limited to 'src/intro.js') diff --git a/src/intro.js b/src/intro.js index c9b1dcdad..64032d4ca 100644 --- a/src/intro.js +++ b/src/intro.js @@ -11,7 +11,41 @@ * * Date: @DATE */ -(function( window, undefined ) { + +(function ( window, factory ) { + + if ( typeof module === "object" && typeof module.exports === "object" ) { + // Expose a jQuery-making factory as module.exports in loaders that implement the Node + // module pattern (including browserify). + // This accentuates the need for a real window in the environment + // e.g. var jQuery = require("jquery")(window); + module.exports = function( w ) { + w = w || window; + if ( !w.document ) { + throw new Error("jQuery requires a window with a document"); + } + return factory( w ); + }; + } else { + // Execute the factory to produce jQuery + var jQuery = factory( window ); + + // Register as a named AMD module, since jQuery can be concatenated with other + // files that may use define, but not via 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( "jquery", [], function() { + return jQuery; + }); + } + } + +// Pass this, window may not be defined yet +}(this, function ( window, undefined ) { // Can't do this because several apps including ASP.NET trace // the stack via arguments.caller.callee and Firefox dies if -- cgit v1.2.3