Commit fc3e1804 authored by John Resig's avatar John Resig

Made 'jQuery' unrollable via .noConflict(true) and instances of new Function()...

Made 'jQuery' unrollable via .noConflict(true) and instances of new Function() have been converted to eval(function(){}) in order to handle jQuery name changes. (Bug #1393)
parent e06b7447
...@@ -19,6 +19,11 @@ ...@@ -19,6 +19,11 @@
* @param jQuery|Element|Array<Element> c context * @param jQuery|Element|Array<Element> c context
* @cat Core * @cat Core
*/ */
// Map over jQuery in case of overwrite
if ( typeof jQuery != "undefined" )
var _jQuery = jQuery;
var jQuery = window.jQuery = function(a,c) { var jQuery = window.jQuery = function(a,c) {
// If the context is global, return a new object // If the context is global, return a new object
if ( window == this || !this.init ) if ( window == this || !this.init )
...@@ -29,7 +34,7 @@ var jQuery = window.jQuery = function(a,c) { ...@@ -29,7 +34,7 @@ var jQuery = window.jQuery = function(a,c) {
// Map over the $ in case of overwrite // Map over the $ in case of overwrite
if ( typeof $ != "undefined" ) if ( typeof $ != "undefined" )
jQuery._$ = $; var _$ = $;
// Map the jQuery namespace to the '$' one // Map the jQuery namespace to the '$' one
window.$ = jQuery; window.$ = jQuery;
...@@ -1345,9 +1350,10 @@ jQuery.extend({ ...@@ -1345,9 +1350,10 @@ jQuery.extend({
* @type undefined * @type undefined
* @cat Core * @cat Core
*/ */
noConflict: function() { noConflict: function(deep) {
if ( jQuery._$ ) window.$ = _$;
$ = jQuery._$; if ( deep )
window.jQuery = _jQuery;
return jQuery; return jQuery;
}, },
...@@ -1851,7 +1857,7 @@ jQuery.extend({ ...@@ -1851,7 +1857,7 @@ jQuery.extend({
// If a string is passed in for the function, make a function // If a string is passed in for the function, make a function
// for it (a handy shortcut) // for it (a handy shortcut)
if ( typeof fn == "string" ) if ( typeof fn == "string" )
fn = new Function("a","i","return " + fn); fn = eval("function(a,i){return " + fn + "}");
var result = []; var result = [];
...@@ -1905,7 +1911,7 @@ jQuery.extend({ ...@@ -1905,7 +1911,7 @@ jQuery.extend({
// If a string is passed in for the function, make a function // If a string is passed in for the function, make a function
// for it (a handy shortcut) // for it (a handy shortcut)
if ( typeof fn == "string" ) if ( typeof fn == "string" )
fn = new Function("a","return " + fn); fn = eval("function(a){return " + fn + "}");
var result = []; var result = [];
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment