[Javascript] flash on mac and javascript [again]

Schalk schalk at volume4.com
Wed Apr 12 16:13:35 CDT 2006


Thanks a lot Nick!

Nick Fitzsimons wrote:
> Schalk wrote:
>> Please have a look at the following page: www.tele-court.com. If you 
>> view this on a PC you will see that it has a Flash header however, 
>> when viewed on Mac using Safari the Flash header does not show. I use 
>> the following JavaScript to load the Flash header:
>
> It doesn't work on Opera either (7.5/Mac, 8.54/Win), nor on IE/Mac (5.2).
>
> The first problem is with the lines:
>
> > window.onload = header_wsound_object;
> > window.onload = header_wsound;
> >
>
> I'm not sure what you're trying to do here, but it looks like you want 
> both functions to execute onload. What is actually happening is that 
> you set the onload handler to a reference to the function 
> "header_wsound_object", but then immediately replace that with a 
> reference to the function "header_wsound". Thus, once the page has 
> fully loaded, "header_wsound" is executed (by all browsers), and 
> "header_wsound_object" is never called at all.
>
> "header_wsound" attempts to insert an <embed> element to hold the 
> Flash object. <embed> has never been part of any standard - it was 
> introduced with Netscape 3 (or 2 even?) back in 1996, and has only 
> ever been supported for legacy reasons by Netscape <= 4, 
> Mozilla/Firefox, and IE/Windows (note that IE/Win and IE/Mac are two 
> completely differet browsers).
>
> Virtually every modern browser understands <object> so, unless users 
> of Netscape 4 and older are important to you, you should look for a 
> technique which allows you to use standards-based markup. You could 
> just get rid of "header_wsound" and its assignation to the onload 
> handler and then all browsers would use the <object> version; however 
> the problem you then have is that IE/Win implements <object> 
> incorrectly - or, to avoid religious wars, differently from other 
> browsers.
>
> You can find more information about getting <object> working 
> cross-browser in Drew McLellan's excellent A List Apart article "Flash 
> Satay":
> <http://www.alistapart.com/articles/flashsatay/>
>
> An example of object-only markup that I've used with success for a 
> couple of years is:
>
> <object height="234"
>         width="468"
>         type="application/x-shockwave-flash"
>         id="flashPlayer"
>         data="yourFlash.swf">
>    <param name="movie" value="yourFlash.swf">
>    <param value="high" name="quality">
>    <param value="opaque" name="wmode">
>    <param value="firstParam=blah&amp;secondParam=bleh" name="FlashVars">
>    <!-- optional fallback markup -->
>    <div id="fallback">
>       <p>
>          This markup should be displayed when the
>          Flash Player is missing.
>       </p>
>       <p>
>          You can replace it with a suitable image, or any HTML you like
>          and it only gets displayed if the user hasn't installed Flash.
>       </p>
>       <p>
>          Some browsers have trouble with this however...
>          test as necessary.
>       </p>
>    </div>
>    <!-- end of fallback markup -->
> </object>
>
> You already have the basic code for creating and inserting the 
> <object> element, so try modifying it to generate the above structure 
> (no need to include the comments, and the fallback code is optional) 
> and see what happens :-)
>
> BTW, if you did execute both functions onload, browsers like IE/Win 
> and Firefox would end up understanding both the <object> and the 
> <embed> and would show the Flash twice.
>
> Hope this helps,
>
> Nick.

-- 
Kind Regards
Schalk Neethling
Web Developer.Designer.Programmer.President
Volume4.Business.Solution.Developers





More information about the Javascript mailing list