hi perrin you mention you want to embed a SWF in every <div class="flash">. your example illustrates that you want to embed the same SWF for every <div class="flash">. this can be accomplished by using embedSWF in a custom function.
see http://code.google.com/p/swfobject/wiki/api#swfobject.createSWF%28attObj,_parObj,_replaceElemIdStr%29 you could do something like: var flashElements = getElementsByClassName("flash"); var flashElementsCount = flashElements.length; var flashvars = {}; var params = {}; var attributes = {}; for(var i = 0; i < flashElementsCount; i++){ var id = "swf_" +i; flashElements[i].id = id; swfobject.embedSWF("mymovie.swf", id, "550", "400", "9.0.0","expressInstall.swf", flashvars, params, attributes); } (of course there are a gazillion ways to refactor this code, but you should get my point) in your examples you always mention swfobject.registerSWF; this is only to be used for *static* publishing (dynamic publishing already handles this chore). i don't understand why you're using registerSWF if you're adding SWFs dynamically. - philip On Aug 27, 2:29 am, Perrin4869 <[email protected]> wrote: > Well, document.getElementById(id); is just an example, you can easily > get dom elements with functions like > document.getElementsByName(name) or a custom getElementsByClassName > (className) fuunction, > and iterate them, registering them to swfobject. > Your method is what I've been using up until now, but it has > shortcomings. First, I must take care of both markup and scripts, > instead of automatizing. > Second of all, the 10 there is an arbitrary number, in a real code I'd > need to figure out what the count is myself. > > Let's say I created a file upload control in PHP, and someone uploaded > Flash content with it. Now, my file upload control also has the > capability of previewing which content > it has saved before, and also if it's Flash, it can embed it for a > preview. But, I don't know the number of upload controls, and I also > don't know the upload controls that have > Flash saved in the database, and having them register some header > content is not really a possibility. Now, if I could just give those > elements a class name or something > to go by which can be easily queried, the problem would be solved by > querying those elements, and registering them through an iteration, > like in my example in the first post. > > var flashElements = getElementsByClassName("flash"); > var flashElementsCount = flashElements.length; > var i; > for(i = 0; i < flashElementsCount; i++) > { > swfobject.registerObject(flashElements[i], "9.0.0"); > > } > > I hope I made what I am trying to accomplish clear. I mean, having to > give an ID to each object is just a pain, and it doesn't really have a > clear advantage, sometimes you > just want to create a collection of Flashes for any reason, and > register them by iterating, and if their count is variable then you > have to take care of figuring it out, ending > with lower performance code. > > Thanks for the attention! > Perrin4869 > > On Aug 27, 6:09 am, Aran Rhee <[email protected]> wrote: > > > RE: using document.getElementById("") - Right, but you just said you didn't > > want to create any id's, so hopw are you going to use that method? > > > So the way I see it is that your problem can be broken down into two parts: > > > 1) creating the required page elements > > 2) calling swfobject methods > > > In regards to 1), if you use a server-side language, or something like > > jQuery to generate your static publish blocks, then you can have a class > > (for styling / positional purposes) and a id naming convesion put in place > > really easily. How were/are you creating all of your <object> blocks anyway? > > > Then for 2) in calling registerObject(), you can just pass your common > > naming convension + counter in a loop like your example code. > > > // simplified example > > for(i = 0; i < 10; i++) > > { > > swfobject.registerObject("swf_file" + i , "9.0.0"); > > > } > > > Aran > > > On Thu, Aug 27, 2009 at 11:47 AM, Perrin4869 > > <[email protected]>wrote: > > > > Sorry for the typo on my post above, in the first line I meant passing > > > a DOM Element, > > > like the ones you get by document.getElementById("");. > > > > On Aug 27, 4:01 am, Perrin4869 <[email protected]> wrote: > > > > Well, doesn't passing a DOM give you total control over the individual > > > > element/swf? > > > > And if it doesn't, can't SWFObject generate the ID for the object > > > > automatically? Leaving it up to each element to define it is not > > > > practical at all, leaving the possibility of duplicates, for example. > > > > > The whole idea is that if a list of swf files get embedded, and > > > > there's a variable number of them, you can just register them by a > > > > common denominator, like a class or name. > > > > > And editing SWFObject isn't a very attractive solutions because of two > > > > reasons: > > > > 1) I would have to take the enormous task of learning how it works. > > > > 2) I would have to make changes for each future release. > > > > > Thanks for the support! > > > > Perrin4869 > > > > > On Aug 27, 3:40 am, Aran Rhee <[email protected]> wrote: > > > > > > Well, a class is not unique, so how were you thinking to target an > > > > > individual element / swf on the page? We need a unique DOM id for > > > > > doing > > > > > things like ExternalInterface calls to/from the swf file, and being > > > able to > > > > > target removing alternate content etc. > > > > > > Also how is it that ids cannot be fully trusted? The whole DOM thing > > > kinda > > > > > relies on the fact that it does work :) > > > > > > RE: Generating id's / elements: > > > > > > // client side > > > > > var div = jQuery('<div>Some text</div>').addClass('foo').attr('id', > > > 'bar'); > > > > > div.appendTo(document.body); > > > > > > // or use a serverside language like php. > > > > > > it is really not very hard... > > > > > > SWFObject is open source, so if you feel you want to make a mod to > > > > > suit > > > your > > > > > own needs. > > > > > > Aran > > > > > > On Thu, Aug 27, 2009 at 10:00 AM, Perrin4869 <[email protected] > > > >wrote: > > > > > > > Hello, I've been using SWFObject for my Flash embedding needs. > > > > > > Now, I think that the registering method is a bit flawed. If I > > > > > > wanted > > > > > > to automatize the registering process, or even register dynamically > > > > > > generated items, having to pass an ID is disadvantageous. Generating > > > > > > an ID for each element is a tedious work, and you can never fully > > > > > > trust it. > > > > > > > Now, what I'd like to accomplish is to register the flash elements > > > > > > based on a class given to them. I'd like to do something like this: > > > > > > > var flashElements = document.getElementsByClassName("flash"); > > > > > > var flashElementsCount = flashElements.length; > > > > > > var i; > > > > > > for(i = 0; i < flashElementsCount; i++) > > > > > > { > > > > > > swfobject.registerObject(flashElements[i], "9.0.0"); > > > > > > } > > > > > > > Is there a way with the current version of SWFObject to accomplish > > > > > > what I'm trying to achieve? If not, what are the chances of getting > > > > > > support for it in subsequent versions? > > > > > > > Thanks for the help! > > > > > > Perrin4869. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "SWFObject" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/swfobject?hl=en -~----------~----~----~----~------~----~------~--~---
