mirror of
https://github.com/jquery/jquery.git
synced 2024-11-23 02:54:22 +00:00
A fix for bug #1443, where globalEval occurred asynchronously in Safari 2, provided by Andrea Giammarchi.
This commit is contained in:
parent
beebbf8ba4
commit
ad1cef94bf
18
src/core.js
18
src/core.js
@ -564,15 +564,19 @@ jQuery.extend({
|
|||||||
data = jQuery.trim( data );
|
data = jQuery.trim( data );
|
||||||
|
|
||||||
if ( data ) {
|
if ( data ) {
|
||||||
if ( window.execScript )
|
// Inspired by code by Andrea Giammarchi
|
||||||
window.execScript( data );
|
// http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html
|
||||||
|
var head = document.getElementsByTagName("head")[0] || document.documentElement,
|
||||||
else if ( jQuery.browser.safari )
|
script = document.createElement("script");
|
||||||
// safari doesn't provide a synchronous global eval
|
|
||||||
window.setTimeout( data, 0 );
|
|
||||||
|
|
||||||
|
script.type = "text/javascript";
|
||||||
|
if ( jQuery.browser.msie )
|
||||||
|
script.text = data;
|
||||||
else
|
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() {
|
test("$('html')", function() {
|
||||||
expect(2);
|
expect(4);
|
||||||
|
|
||||||
reset();
|
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();
|
reset();
|
||||||
ok( $("<link rel='stylesheet'/>")[0], "Creating a link" );
|
ok( $("<link rel='stylesheet'/>")[0], "Creating a link" );
|
||||||
|
Loading…
Reference in New Issue
Block a user