From 6b0d3bb273f09910921ed84539de06c2e7ecd19b Mon Sep 17 00:00:00 2001 From: John Resig Date: Tue, 31 Jul 2007 02:59:53 +0000 Subject: [PATCH] Brought back jQuery.globalEval(), fixing bug #1425. --- src/ajax/ajax.js | 2 +- src/jquery/jquery.js | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/ajax/ajax.js b/src/ajax/ajax.js index 645caf7..392ea16 100644 --- a/src/ajax/ajax.js +++ b/src/ajax/ajax.js @@ -765,7 +765,7 @@ jQuery.extend({ // If the type is "script", eval it in global context if ( type == "script" ) - (new Function( data ))(); + jQuery.globalEval( data ); // Get the JavaScript object, if JSON is used. if ( type == "json" ) diff --git a/src/jquery/jquery.js b/src/jquery/jquery.js index a0a2009..440e20e 100644 --- a/src/jquery/jquery.js +++ b/src/jquery/jquery.js @@ -1191,7 +1191,7 @@ jQuery.fn = jQuery.prototype = { if ( this.src ) jQuery.ajax({ url: this.src, async: false, dataType: "script" }); else - (new Function( this.text || this.textContent || this.innerHTML || "" ))(); + jQuery.globalEval( this.text || this.textContent || this.innerHTML || "" ); } else fn.apply( obj, [ clone ? this.cloneNode(true) : this ] ); }); @@ -1322,6 +1322,21 @@ jQuery.extend({ elem.tagName && elem.ownerDocument && !elem.ownerDocument.body; }, + // Evalulates a script in a global context + // Evaluates Async. in Safari 2 :-( + globalEval: function( data ) { + data = jQuery.trim( data ); + if ( data ) { + if ( window.execScript ) + window.execScript( data ); + else if ( jQuery.browser.safari ) + // safari doesn't provide a synchronous global eval + window.setTimeout( data, 0 ); + else + eval.call( window, data ); + } + }, + nodeName: function( elem, name ) { return elem.nodeName && elem.nodeName.toUpperCase() == name.toUpperCase(); }, -- 1.7.10.4