That's a cool fix. I really like your syntax. However, Safari still won't eval that globally either using self.eval or window.eval. That is as tested on Safari 1.3, I don't have easy access to 2.0. I can try it there later though.
On 11/22/06, Francisco Brito <[EMAIL PROTECTED]> wrote: > I don't have access to safari right now, but perhaps this might work: > > self.eval(); // or window.self.eval if you can see the performance change > > I remember having a similar problem with firefox a bit ago using > window.eval() and that fixed it. I ended up with: > > (window.execScript || self.eval)(script); > > I have a fresh post about this: > http://nullisnull.blogspot.com/2006/11/executing-scripts-with-xmlhttprequest.html > I'm curious to see if it works with Safari. > > -- > Brito > > > > On 11/22/06, Paul McLanahan <[EMAIL PROTECTED]> wrote: > > I just checked eval.call(window,data) on Safari 2.0.4 and it did NOT > > work. The function was available immediately, but only in the scope > > of the httpData function. And with window.setTimeout it was available > > globally, but not immediately inside of httpData.... > > > > <grumbles:incoherrently/> > > > > Example... > > > > external file > > ======================== > > function gsTest(){alert("Success!!");} > > ======================== > > > > inside of $.httpData() > > ======================== > > window.execScript?window.execScript(data):eval.call( window, data ); > > gsTest(); > > ======================== > > > > In Safari 1.3 or 2.0 the above will alert "Success!!", however, > > clicking on <a href="#" onclick="gsTest()">test</a> in the document > > does not work. > > > > inside of $.httpData() > > ======================== > > > window.execScript?window.execScript(data):jQuery.browser.safari?window.setTimeout(data,0):eval.call( > > window, data ); > > gsTest(); > > ======================== > > > > In Safari 1.3 or 2.0 the above will NOT alert "Success!!" immediately. > > It will throw an error. But, clicking on a link like <a href="#" > > onclick="gsTest()">test</a> in the document will work. > > > > Anyone got any ideas? I'm fresh out. If we can't solve this, then I > > suggest we keep the window.setTimeout in there for Safari since I > > believe that global availability will be the feature most often used > > and the 10ms problem will be encountered very rarely. I completely > > agree with Jörn that it should be documented in the code of the > > function. > > > > On 11/22/06, Jörn Zaefferer <[EMAIL PROTECTED]> wrote: > > > Paul McLanahan schrieb: > > > > jQuery.gEval = function(data){ > > > > if(window.execScript) // msie > > > > window.execScript(data); > > > > else if(jQuery.browser.safari) // safari > > > > window.setTimeout (data,0); > > > > else // all others > > > > eval.call( window, data ); > > > > } > > > > > > > > What do you guys think? Works in all my tests so far, but again, I > > > > don't have SVN access here so.... I'm SOL as far as the sweet new test > > > > suite goes. > > > > > > > Looks good for me. We should note somewhere that the evaluation is > > > asynchronous for Safari. If anyone actually happens to stumble about > > > that problem, it's nice to have it documented. > > > > > > Could you please check Safari 2.x? It would be nice to use eval.call() > > > if possible... > > > > > > -- > > > Jörn Zaefferer > > > > > > http://bassistance.de > > > > > > > > > _______________________________________________ > > > jQuery mailing list > > > [email protected] > > > http://jquery.com/discuss/ > > > > > > > _______________________________________________ > > jQuery mailing list > > [email protected] > > http://jquery.com/discuss/ > > > > > > -- > Francisco Brito > > software: http://nullisnull.blogspot.com > photography: > http://www.flickr.com/photos/darkgoyle > everything else: http://brito.mindsay.com > _______________________________________________ > jQuery mailing list > [email protected] > http://jquery.com/discuss/ > > > _______________________________________________ jQuery mailing list [email protected] http://jquery.com/discuss/
