Line 614 of jQuery 1.7rc1:
window[ "eval" ].call( window, data );
Why not simply write
eval.call( window, data );
?
The answer is here: Decoding jQuery,
Jim Driscoll found out that for more standards-respecting browsers, you could use eval.call(window,data), but for Chrome and IE, things are a bit different.
Internet Explorer: It seems that IE uses window.execScript(data)
Chrome: eval.call(window,data) breaks on Chrome, but window[ "eval" ].call( window, data) works on Chrome, and as well as other non-IE browsers, this is how the above workarounds based upon.
After looking at the source, I have found this link. Have a look at the emphasized text:
Sadly,
eval.call(window,src)
breaks on Chrome - it complains about contexts not matching. Odd - and I was unable to Google up why this might be so. But a couple lucky guesses later, and I discovered that window.eval.call(window,src) works on all non-IE browsers. Now, when I say "var j = 1", the window[j] is the variable that's set... So, that's good. Why do we have to add the extra window. on Chrome? Not sure - I could guess, but it's too likely to be wrong.
So, window.eval
is used to get globalEval
work in Chrome.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With