Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
?
Solved

No flash then display jpeg

Posted on 2004-04-21
5
Medium Priority
?
2,598 Views
Last Modified: 2013-11-18
I have a flash logo on my website.  If a visitor does not have the flash 6 plugin it asks them to download it.  Is there a way for me to detect if the user has the plugin and if not then just display a JPEG logo instead?  

Thanks
Aaron

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="600" height="400" align="middle">
<param name="movie" value="logo2.swf">
<param name="quality" value="high">
<PARAM NAME="LOOP" VALUE="false">

 <embed src="logo2.swf" width="600" height="400" align="middle" quality="high" loop=false pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash"></embed>
0
Comment
Question by:almorris
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
5 Comments
 
LVL 10

Expert Comment

by:eeBlueShadow
ID: 10883190
There's a way to test whether the user has Flash Player 6 or higher, because apparently ( http://www.webqs.com/experiment.php?id=16 ) Flash Player 6+ configures the browser to add the Flash MIME-type (application/x-shockwave-flash) to the HTTP Accept header.

See the article for more, but it basically means you can perform an

if(strpos($_SERVER['HTTP_ACCEPT'], "application/x-shockwave-flash"))        - (PHP)

to find out. This still leaves you with the fact that you won't find out if people have an older version of Flash, but thats dealt with more on the link above.
0
 
LVL 36

Expert Comment

by:Zyloch
ID: 10884808
This is possible with JavaScript:

<script>
<!--

function hasflash(){
for (i=0;i<navigator.plugins.length;i++){
if (navigator.plugins[i].name.indexOf("Flash")>=0){
return true;
}
return false;
}

// -->
</script>

Then, inside your body, you only need a script that calls the hasflash() function like this:

<body>
<script>
<!--
if (hasflash()) {
document.write(CODE FOR FLASH);
}
else{
document.write(CODE FOR JPEG);
}
// -->
</script>

It may be better if you even used this with PHP to have the document.write substituted by echo(), but both should work.

--Zyloch
0
 
LVL 1

Expert Comment

by:hallvord
ID: 10889194
Zyloch's comment will only work in Netscape / Mozilla and Opera because Internet Explorer does not give you the navigator.plugins list.

I suggest that you use no scripting but let browsers without the plugin fall back on using the HTML code "inside" the OBECT tag.

First, remove the codebase reference to prevent the browser from asking the user if it should download it. I have also added a TYPE parameter to your OBJECT tag for browsers that do not understand a classid (this is used only by IE AFAIK).

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="600" height="400" align="middle" type="application/x-shockwave-flash">

<param name="movie" value="logo2.swf">
<param name="quality" value="high">
<PARAM NAME="LOOP" VALUE="false">

 <embed src="logo2.swf" width="600" height="400" align="middle" quality="high" loop=false type="application/x-shockwave-flash">

<img src="mylogo.jpg" width="600" height="400" alt="My company logo" />

</embed>
</object>

For old Netscapes you may have to add <noembed> tags around the image.

The above code should be handled by the browser as follows:

1) Voila, here is an OBJECT. If I understand this tag and can handle this file type with one of my plugins, I'll invoke the plugin and display it. if not...
2) Well, here is an EMBED tag. If I understand this tag and can handle this file type with one of my plugins, I'll invoke the plugin and display it. if not...
3) A good old IMG tag - since I for one reason or another couldn't make sense of the two other tags I'll just retrieve and display this image.

Gotcha: This is correct behaviour according to the HTML specification. Actual implementation in browsers may vary, as always...
0
 

Author Comment

by:almorris
ID: 10891898
hallvord  your comment looks the way to go as I do want this action in IE.   One thing I found is that when I tested it on win98 that had IE5 it thought my plugin was flash 3 (I guess this is what shipped with 98) and would not run the animation.  Is there away for me to see if it's version 6 like I have.  I guess the application/x-shockwave-flash id's all versions of flash.

Thanks
Aaron
0
 
LVL 1

Accepted Solution

by:
hallvord earned 260 total points
ID: 10893011
Version numbers are a serious mess for many applications and plugins :-)

As far as I know you can not include a version number in the OBJECT tag (it would be great to be able to do something like type="application/x-shockwave-flash; version=6") without including a download location - in your original tag this was the "codebase" attribute. However, we would rather not include "codebase" here because it will make some browsers without Flash ask the user about downloading it..

The HTML tag solution is by far the "cleanest" way in my opinion although I have not tested it extensively - if you do try this solution in various browsers it would be really useful with a little list of how they cope.

If version numbers are essential, perhaps you want to use a script anyway. Plugin detection is complicated because it is not standardised and the methods used in IE and Netscape are wildly different. Also, if your visitor happens to use a version that is neither IE nor Netscape and it is mis-detected the plugin detection will probably break and perhaps give a false "plugin not installed" message (a common problem for Opera because it identifies as IE by default).

Here are a couple of pointers - you may find these interesting:
JavaScript: http://www.quirksmode.org/js/flash.html
Using Flash for Flash detection: http://www.macromedia.com/support/flash/ts/documents/scriptfree_detection.htm
0

Featured Post

How to Use the Help Bell

Need to boost the visibility of your question for solutions? Use the Experts Exchange Help Bell to confirm priority levels and contact subject-matter experts for question attention.  Check out this how-to article for more information.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

I made this because I wanted to get e-mail with a attached csv file so I'd would be able to import user input into a MS Excel template, but I also wanted to register/save all inputs from each day in a file on the server. 1st - It creates a temp C…
Without even knowing it, most of us are using web applications on a daily basis.  In fact, Gmail and Yahoo email, Twitter, Facebook, and eBay are used by most of us daily—and they are web applications. We generally confuse these web applications to…
The viewer will learn how to create and use a small PHP class to apply a watermark to an image. This video shows the viewer the setup for the PHP watermark as well as important coding language. Continue to Part 2 to learn the core code used in creat…
The viewer will learn the benefit of using external CSS files and the relationship between class and ID selectors. Create your external css file by saving it as style.css then set up your style tags: (CODE) Reference the nav tag and set your prop…

597 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question