On Tue, Jan 13, 2015 at 04:10:52PM -0500, Karl Dahlke wrote: > Well it did break something in jsrt, though small. > > You removed the lines that link the new elements into the arrays > of said elements, and honestly I don't know what the correct behavior is here. > When I create a script, should it be in the list of scripts? > I don't know. > The last function document.script$$pending() assumes that a script created > will be in this list, and then looks through this list for scripts pending, > for a script to run that hasn't been run. > If a created script should not be put on the list document.scripts, > then we have to put this one somewhere, in some kind of queue, > so it can be run. > > jsrt exercised this feature by creating one final script which, when run, > put one line at the end of jsrt.browse. > The line use to say {Last Link}. > That line is not there any more, because the last script never runs, > because it is not placed in document.scripts. > We may need to do a little research to see how it *should* behave. > Either these elements get put in their corresponding lists automatically, > or if not then we need to implement a run queue for created scripts. Sorry, I did wonder if I'd break something by doing this. I'm fairly confident in saying that elements *shouldn't* be put in these lists automatically since the function returns the created element to javascript which then inserts it into the DOM in the correct position, i.e. in the case of mouse.com, the created script should really appear before any other scripts in the document and thus at the start of the scripts array. As for what we do about running these scripts, the logic seems to involve reparsing the DOM once the current script has finished execution (I presume) and running the new script elements at that stage. Since we don't do this at the moment, a separate run queue is probably needed, along with some form of functionality in our DOM insertion functions (appendChild, insertBefore etc) to put elements in the correct place in these arrays. Tbh, I suspect we can probably put together the relevant functionality in startwindow.js to reparse the DOM and generate the arrays from the js side, though this obviously doesn't help the rendering at all. Also, as per comments in startwindow.js, apparently we're supposed to return something called a node list object rather than an array from getElement* functions. No idea what one of these is yet, more future research I think. Cheers, Adam.