Skip to content
Permalink
Browse files

A fix for bug #1443, where globalEval occurred asynchronously in Safa…

…ri 2, provided by Andrea Giammarchi.
  • Loading branch information
jeresig committed Oct 1, 2007
1 parent beebbf8 commit ad1cef94bf134ff7f471a0649dac0158a481cd5d
Showing with 21 additions and 10 deletions.
  1. +12 −8 src/core.js
  2. +9 −2 test/unit/core.js
@@ -564,15 +564,19 @@ jQuery.extend({
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 );

// Inspired by code by Andrea Giammarchi
// http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html
var head = document.getElementsByTagName("head")[0] || document.documentElement,
script = document.createElement("script");

script.type = "text/javascript";
if ( jQuery.browser.msie )
script.text = data;
else
eval.call( window, data );
script.appendChild( document.createTextNode( data ) );

head.appendChild( script );
head.removeChild( script );
}
},

@@ -123,11 +123,18 @@ test("isFunction", function() {
});
});

var foo = false;

test("$('html')", function() {
expect(2);
expect(4);

reset();
ok( $("<script>var foo='test';</script>")[0], "Creating a script" );
foo = false;
var s = $("<script>var foo='test';</script>")[0];
ok( s, "Creating a script" );
ok( !foo, "Make sure the script wasn't executed prematurely" );
$("body").append(s);
ok( foo, "Executing a scripts contents in the right context" );

reset();
ok( $("<link rel='stylesheet'/>")[0], "Creating a link" );

0 comments on commit ad1cef9

Please sign in to comment.
You can’t perform that action at this time.