]> source.dussan.org Git - jquery.git/commitdiff
Support CommonJS environments by accentuating the need for a window with a document...
authorTimmy Willison <timmywillisn@gmail.com>
Thu, 4 Jul 2013 18:00:26 +0000 (14:00 -0400)
committerTimmy Willison <timmywillisn@gmail.com>
Thu, 4 Jul 2013 18:00:26 +0000 (14:00 -0400)
Gruntfile.js
src/exports.js [deleted file]
src/intro.js
src/outro.js

index 952515b46f05f5e985fe3324f7cd5fc965a08145..d582451b797d4dc3e0bd564ce029e81ff34aa398 100644 (file)
@@ -68,8 +68,6 @@ module.exports = function( grunt ) {
                                        { flag: "offset", src: "src/offset.js", needs: ["css"] },
                                        { flag: "dimensions", src: "src/dimensions.js", needs: ["css"] },
                                        { flag: "deprecated", src: "src/deprecated.js" },
-
-                                       "src/exports.js",
                                        "src/outro.js"
                                ]
                        }
diff --git a/src/exports.js b/src/exports.js
deleted file mode 100644 (file)
index 2d5c56f..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-if ( typeof module === "object" && module && typeof module.exports === "object" ) {
-       // Expose jQuery as module.exports in loaders that implement the Node
-       // module pattern (including browserify). Do not create the global, since
-       // the user will be storing it themselves locally, and globals are frowned
-       // upon in the Node module world.
-       module.exports = jQuery;
-} else {
-       // 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; } );
-       }
-}
-
-// If there is a window object, that at least has a document property,
-// define jQuery and $ identifiers
-if ( typeof window === "object" && typeof window.document === "object" ) {
-       window.jQuery = window.$ = jQuery;
-}
index c9b1dcdade9bc5a826aa1a733f8f2596b5dc6c7c..64032d4ca32b1a505122dc6e5dfa26a580eb9019 100644 (file)
  *
  * 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
index ac484391c090afe5c5787b2089146ae8f1b36688..20cec437c84a80dc94611b65c0957d9edbfa255a 100644 (file)
@@ -1,2 +1,6 @@
+// Expose jQuery and $ identifiers, even in
+// AMD (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
+// and CommonJS for browser emulators (#13566)
+return (window.jQuery = window.$ = jQuery);
 
-})( window );
+}));