Hmm, actually I think I'm still getting the problem, it's just being quiet about it now :(
On Sep 16, 3:00 pm, Mark T <[EMAIL PROTECTED]> wrote: > Ok, my temporary fix has been to alter the following block of code > from line 2656 in jquery 1.2.6: > > // If we're requesting a remote document > // and trying to load JSON or Script with a GET > if ( s.dataType == "script" && type == "GET"){ > //&& remote.test(s.url) && > remote.exec(s.url)[1] != location.host ) > { > var head = document.getElementsByTagName("head")[0]; > var script = document.createElement("script"); > > I have commented out the second part of the IF statement which tests > whether the URL is remote. This will force all scripts to use the > <script src=??? and onreadystatechange / onload events whether they > are remote or local. > > I'd be interested in hearing why using the alternative way for local > scripts is better. > > Cheers, > > Mark. > > On Sep 16, 11:57 am, robert_shipley <[EMAIL PROTECTED]> > wrote: > > > Posted by Rob on Behalf of Mark... > > > I've been doing a little investigation into this (I'm a colleague of > > Rob's) and we are still experiencing the issue in Firefox 3. I'm > > afraid it's very difficult for me to produce an example of this as we > > are using quite a complex set of getScript calls in our website and > > can't make this available to the outside world. I've managed to > > generate a replica of the page here:http://www.tcc-net.com/jquery-getscript/ > > > Here are my findings todate: > > > - We are calling getScript to retrieve local javascript files. > > - As soon as the file is loaded, we attempt to execute a function > > within the script. > > > I put a few console.log messages into the files (Firebug uses > > console.log for debugging) to output messages at certain points. The > > key ones were a message at the end of the file being retrieved ("end > > of tablesorter") with getScript and one in the callback ("would > > trigger") which is triggered on (apparent) completion of the load. > > > Most of the time, these appear in the console in the correct order > > ("end of tablesorter" => "would trigger"). Occasionally, however, > > they appear the alternate way around and this is when the error > > (myMethod() is not a valid function, or words to those effect) is > > seen. > > > I therefore deduce that the callback is being triggered before the > > execution of the javascript is complete (even though it is loaded, it > > has not executed fully). It is down to a race as to whether the > > callback is triggered first or the script completes execution. > > > Looking at the jQuery code, and I am claiming no expertise here so I > > may well be wrong, it seems that the "globalEval" function is used to > > execute a local script once downloaded. I do not see anywhere in this > > function, however, where there are any checks on whether the script > > has fully executed. > > > It might be that in IE6, IE7, FF < 3 the execution of the javascript > > is paused until the inserted script element has been executed, and in > > FF3, no such pause occurs. I am hypothesising here though, and really > > don't have enough information on how this method of script loading > > works internally. > > > I'm posting this information here more to see if it triggers any > > thoughts in those more experienced jQuery contributors. In the > > meantime, I will continue my own investigations. > > > Cheers, > > > Mark.