No problem, we were all newbies at some point. :)
On Tue, Jan 26, 2010 at 4:47 PM, Jean <[email protected]> wrote: > Thanks, I understand now. Your example makes the compression process > very clear. > > I appreciate that you're a patient teacher to a newbie-- on some > message forums, you get very mean replies if you ask questions that > show you're ignorant of how things work. > > Jean > > On Jan 26, 6:30 pm, Philip Hutchison <[email protected]> wrote: > > It shows up as "n" because the SWFObject library is compressed > ("minified"). > > It's an automated process that gives all variables the shortest names > > possible. Here's an (admittedly simplistic and silly) example > > > > ---------------------------------- > > function mergeStrings(first, second){ > > return first + second; > > > > } > > > > var firstvariable = "hi"; > > var secondvariable = "world"; > > var thirdvariable = mergeStrings(firstvariable, secondvariable); > > ---------------------------------- > > > > will be compressed to > > > > ---------------------------------- > > function f(){return a+b};var a="hi",b="world",c=f(a,b) > > ---------------------------------- > > > > As you can see, it's a substantial savings on file size but with the > > trade-off of illegibility. It isn't meant to be human-readable. > > > > If you're trying to debug what's going on in your site, you could use the > * > > uncompressed* version of SWFObject while you troubleshoot. It's (a bit) > > easier to read and has the same functionality. :) > > > > http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject_src.js > > > > - philip > > > > On Tue, Jan 26, 2010 at 3:37 PM, Jean <[email protected]> wrote: > > > Fair enough. You have good arguments about not adding custom error > > > handling. How about giving the variable a more descriptive name than > > > "n"? If the variable were named "element", then the error message > > > would say, "element is null", which would be an improvement. > > > > > Thanks for pointing out I'm using a seriously outdated version. I'm > > > looking forward to the upgrade! > > > > > Jean > > > > > On Jan 21, 1:43 pm, Philip Hutchison <[email protected]> wrote: > > > > Hi Jean > > > > > > Thanks for the input. > > > > > > First, let me point out that you're using a really outdated version > of > > > > SWFObject. The current release is 2.2, which uses a completely > > > re-written > > > > codebase than 1.5. > > > > > > Regardless, both editions do not check for the existence of the > targeted > > > DOM > > > > element. > > > > > > Would it be useful to add error-checking? Probably. I do this all the > > > time > > > > in my own scripts. However, the current practice for every major > > > JavaScript > > > > library/framework (jQuery, MooTools, Dojo, etc.) is to assume that > > > checking > > > > for the existence of the DOM element is the *page developer*'s > > > > responsibility. If you don't know if your element is going to exist > (and > > > I > > > > wonder why you wouldn't know), you can write your own check: > > > > > > var myElement = document.getElementById("flashcontent"); > > > > if(myElement){ > > > > swfobject.embedSWF("myContent.swf", "flashcontent", "300", "120", > > > > "9.0.0"); > > > > > > } > > > > > > Two thoughts: > > > > > > *Custom error messages > > > > *You're right when you say a custom error message could potentially > help > > > a > > > > developer debug their code. However, there are many issues that would > > > arise > > > > from trying to introduce custom error code, including the size of our > > > > codebase (which needs to be as small as possible), and the method of > > > > delivering the message (not everyone has access to console.log via > > > Firebug > > > > or Safari). > > > > > > *Silent failure* > > > > Another possibility is silent failure. The code could be edited to > > > simply > > > > exit and not do anything if the DOM element is not found. This could > > > > potentially make debugging even more difficult (why isn't my SWF > showing > > > up? > > > > what's going on?) and creates a more lax coding environment. It's > better > > > to > > > > allow the error to go through so the developer knows there's > something > > > > wrong. > > > > > > As for the cryptic error messages you currently see, they're up to > the > > > > browser. Different browsers show different errors. But the "n is > > > undefined" > > > > or "n is null" type errors are very well documented in this Google > Group > > > > support list. > > > > > > - philip > > > > > > On Thu, Jan 21, 2010 at 8:06 AM, Jean <[email protected]> wrote: > > > > > Hi, I recently discovered that if the element I pass in for the > > > > > SWFObject to be written into is null, the error I get back is "n is > > > > > null", which had me befuddled for a little while. I figured out > what > > > > > was wrong because Firebug showed me the relevant lines of code, but > it > > > > > seems that the error message could be changed to be something more > > > > > descriptive, like "element not found: div_flashGoesHere_typo". > > > > > > > Example of my code: > > > > > var so = new SWFObject("usindexesview.swf", "usindexesview", > "1000", > > > > > "450", "9", "#eeeeee"); > > > > > so.write('div_flashGoesHere_typo'); > > > > > > > My page does have a div element called 'div_flashGoesHere' but not > one > > > > > called 'div_flashGoesHere_typo'. The error comes on these lines in > > > > > swfobject.js: > > > > > > > 125 var n = (typeof elementId == 'string') ? > > > > > document.getElementById(elementId) : elementId; > > > > > 126 n.innerHTML = this.getSWFHTML(); > > > > > > > So the error I get is "n is null", which happens on line 126. > > > > > > > At the very least, it would help if the variable were renamed > > > > > 'element' or something more descriptive than 'n', but I leave the > > > > > implementation details up to you. :-) > > > > > > > Thanks for making a great little script! I'm just hoping I can > help > > > > > make it a bit better. > > > > > > > Jean > > > > > > > -- > > > > > 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]<swfobject%[email protected]> > <swfobject%[email protected]<swfobject%[email protected]> > > > > > <swfobject%[email protected]<swfobject%[email protected]> > <swfobject%[email protected]<swfobject%[email protected]> > > > > > > > > > . > > > > > For more options, visit this group at > > > > >http://groups.google.com/group/swfobject?hl=en. > > > > > -- > > > 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]<swfobject%[email protected]> > <swfobject%[email protected]<swfobject%[email protected]> > > > > > . > > > For more options, visit this group at > > >http://groups.google.com/group/swfobject?hl=en. > > -- > 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]<swfobject%[email protected]> > . > For more options, visit this group at > http://groups.google.com/group/swfobject?hl=en. > > -- 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.
