I actually should look into the availability of Flash plug-ins for jQuery. Those could prove useful to some of the projects I've got in the pipeline.
I ended up finding the one document.write statement in Adobe's code and changing it to a DOM innerHTML call that worked perfectly. This was certainly a good learning experience. Thanks again for your responses. On Sep 30, 4:25 pm, Michael Geary <m...@mg.to> wrote: > When you load these dynamic players, have you already verified that your > visitor has a compatible Flash player installed? That's really all that the > fancy Adobe code (or alternatives like SWFObject) buys you. If you use the > Adobe code to load some Flash movie on the main page, than it's already done > its job, and after that you could just use jQuery to insert a simple > <object> element for any subsequent players. > > You don't even need the traditional nested <object><embed></object> tags - > the <object> element is all you need in all the browsers that you probably > care about. > > Or I'll bet there are two or three Flash plugins for jQuery, one of which > should do what you're looking for. > > You *could* use that document.write replacement code I posted, but you're > unlikely to need it. (Maybe it will prove useful for some other purpose to > someone else who stumbles on the thread...) > > -Mike > > On Wed, Sep 30, 2009 at 12:14 PM, The alMIGHTY N <natle...@yahoo.com> wrote: > > > > > Thanks for the response, Mike. I can't believe I didn't put those two > > things together! > > > I'm creating a page that will display a Flash Video Player (the one > > that comes with Dreamweaver by default) to load progressive video > > content. My intention is to include links on that page representing > > different pieces of content - when a user clicks on one of these > > links, it removes the existing player object and dynamically renders a > > new one. > > > I thought the easiest way to do this was to put the JavaScript code > > that sets up the object into a separate file to be loaded in. However, > > this code uses document.write. > > > I suppose I could just use jQuery to dynamically generate a DOM > > element and feed in the right attributes, but I thought it would be > > easier to just use the file Adobe gave me already. > > > Thanks again for your response! > > > On Sep 30, 2:41 pm, Michael Geary <m...@mg.to> wrote: > > > document.write() requires the document to be "open" in order to write to > > it. > > > The three related functions here are: > > > > document.open() > > > document.write() > > > document.close() > > > > When a page starts loading, the browser implicitly calls document.open() > > to > > > open the document. So document.write() works as you expect while the page > > is > > > loading. > > > > When the page finishes loading (roughly, around the time that jQuery's > > > 'ready' event fires), the browser calls document.close() to close the > > > document. > > > > After that, if you call document.write() again, the browser forces > > another > > > implicit call to document.open() first - which clears the document! > > That's > > > why you see the document.write() output replacing the entire document. > > > > I'm not sure off the top of my head what IE is doing differently here - > > it's > > > not executing the loaded scripts at all? Does it execute scripts if they > > > don't have document.write() in them? > > > > In any case, you can't use document.write() after the page is loaded. > > > > What kind of behavior are you looking for? It sounds like you do want the > > > scripts executed, and you want the document.write() calls to do > > *something* > > > - but what? Where should the document.write() output go? Generally, > > scripts > > > that use document.write() expect its output to be inserted into the > > document > > > immediately after the <script> tag. > > > > One thing you can do that may work in some cases: Replace > > document.write() > > > with a function that inserts its output into the DOM: > > > > function setDocumentWriteTo( selector ) { > > > > function write( args, end ) { > > > $(selector).append( > > > Array.prototype.join.call( args, '' ) + end > > > ); > > > } > > > > document.write = function() { write( arguments, '' ); }; > > > document.writeln = function() { write( arguments, '\n' ); }; > > > > } > > > > setDocumentWriteTo( '#writeHere' ); > > > > Now you can load a script that calls document.write() or > > document.writeln() > > > and it will actually call your function instead - which will append the > > > output to your #writeHere element. > > > > -Mike > > > > On Wed, Sep 30, 2009 at 10:22 AM, The alMIGHTY N <natle...@yahoo.com> > > wrote: > > > > > I need to be able to use jQuery's load function to grab the contents > > > > of an external file and append them to a particular DOM element. The > > > > problem is that when that external file includes scripts that contain > > > > calls to document.write, I get weird behavior that changes depending > > > > on which browser I'm using. > > > > > If I'm using Internet Explorer, the load function gets all of the non- > > > > script elements from the external page and correctly appends them into > > > > the DOM element. Of course, this is not ideal because it ignores the > > > > scripts. > > > > > If I'm using Firefox or Safari, the load function runs the scripts but > > > > the document.write output overrides the entirety of the calling page. > > > > Thus, I end up with a page that now only contains the document.write > > > > output instead of a page that includes the original HTML plus the > > > > document.write output as a child of a DOM element. > > > > > I don't think this is a jQuery issue but I experienced it while > > > > running jQuery so I posted here in the hopes that someone else has > > > > experienced this and knows a workaround. :-)