Image Image Image Image Image
Scroll to Top

To Top

Information Resources

19

Jul
2006

Information Resources

Permalink

By admin404

Flash Plug-In Detection and Upgrading

July 19, 2006 - Information Resources

Incorporating the SWFObject ExpressInstall to force Plug-in Installation

In our previous article (Activating an ActiveX Control’s Interface through Javascript), we recommended circumventing the Microsoft Internet Explorer update that forces users to activate media items with Geoff Stearns’s SWFObject. As a result, a number of emails flooded into ERA404 with questions on browser detection to drive users to upgrade their Flash Plug-In.

Flash has obviously grown quickly from its original version and Adobe/Macromedia released a number of browser plug-ins to handle these advances. While we recommend publishing Flash files to accommodate for the least common denominator (that is, users with older plug-ins), sometimes requesting a user browser upgrade is unavoidable. Browsing the Adobe site can show you a census of plug-in penetration into the web-browsing world. At the time this article was published (07/19/06), penetration looked like this:

 

V. 5 V. 6 V. 7 V. 8
US
97.7% 97.2% 94.8% 69.3%
Canada
98% 96.9% 94.1% 79%
Europe
98.3% 97.2% 95.1% 76.1%
Asia
n/a n/a n/a n/a

 

Adobe has recently released the Adobe Flash Plug-in v.9.0, and while roughly 94% of the world has at least v.7.0, your Flash files may require 8 or 9, to work properly. Note, also, that those figures are from March 2006 and penetration has certainly increased since then; especially now that myspace.com is forcing users to upgrade to Flash Player 9.0. Again, Geoff Stearns has come to the rescue with his ExpressInstall method for the SWFObject.

To detect and request an upgrade, encode your SWF file the same way we instructed in our previous article:

<div id="navcontent">This content will show if the movie cannot load.</div>
 <script type="text/javascript">
 // <![CDATA[
 var a = new SWFObject(swf/nav_home.swf", "fo_nav", "796", "72", "8,0,0,0", "#FFFFFF", true);
 a.addParam("allowScriptAccess", "sameDomain");
 a.addParam("quality", "high");
 a.addParam("scale", "noscale");
 a.write("navcontent");
 // ]]>
</script>

Add a parameter for the Flash redirect to tell the browser to reload your flash after installation is successful:

a.addParam('xiRedirectUrl', 'http://www.yourwebsite.com');

Now that you’ve properly inserted your Flash using the SWFObject, let’s look at how you can modify your Flash file to use the object’s plug-in detection and drive the user to upgrade if necessary. In the above example, you can see I’ve required a plug-in of 8 or greater. With the following code, users with a browser that meets or exceeds this requirement will see nothing but your movie. Users with an older plug-in (release previous to v.8.0) will see Flash Alert (left) that asks them to update their plug-in. If the user says “Yes,” the plug-in will install automatically. If they say “No,” a Javascript Alert will inform them that the movie cannot be viewed because a newer plug-in is required.

Remember from our previous article that when the SWFObject returns “false” (the movie cannot be displayed), then the text content that you provide in the <div> container will show instead. It is because of this that you should put text in the <div> container to inform them of what’s happening. The example above says “This content will show if the movie cannot load,” but it would be more informative (when you have the ExpressInstall included) to replace that content with something like this:

This Flash movie cannot load. You are viewing this because:
1. You have no Flash Plug-In (Click here to download)
2. Your Flash Plug-in is older than the necessary version required to play this movie
(Click here to reload the movie and click “Yes” when asked to upgrade your plug-in.)

Now let’s get to the Flash.

Include the following lines of code into your Flash file prior to the loading bar (optional) and content:

#include "expressinstall.as"
 
 // initialize the ExpressInstall object
var ExpressInstall = new ExpressInstall();
// if the user needs to upgrade, show the 'start upgrade' button
if (ExpressInstall.needsUpdate) {
// this is optional, you could also automatically start the
 // upgrade by calling ExpressInstall.init() here instead of the following lines
// attach the custom upgrade message and center it
var upgradeMsg = attachMovie("upgradeMsg_src", "upgradeMsg", 1);
upgradeMsg._x = Stage.width / 2;
upgradeMsg._y = Stage.height / 2;
// attach the button actions that will start the ExpresInstall updater
upgradeMsg.upgradeBtn.onRelease = function() {
 // the ExpressInstall.init() method is what kicks off the actual update
ExpressInstall.init();
}
 // if expressinstall is invoked, stop the timeline.
stop();
}

Ensure that Mr. Stearns’s expressinstall.as file is in your build directory so that it will be available to be compiled with the movie when you publish. That’s all you need to do.

Zeh Fernando, the genius behind zeh.com.br, recommends embedding the contents of Mr. Stearns’s expressinstall.as script into the timeline of a template Flash movie and saving this as your launchpad for all sites. Starting with a FLA that includes the ExpressInstall (and a stripped-down index.html file for which the .swf is to be “embedded”) will help to manage your scripts from inception to launch and make it easier for users.

Recommended Links

Tags | activex, adobe, citarella, deconcept, detect, flash plug-in, geoff stearns, macromedia, shockwave, swfobject, update, upgrade, zeh fernando

19

Jun
2006

Information Resources

Permalink

By admin404

Activating an ActiveX Control’s Interface through Javascript

June 19, 2006 - Information Resources

Removing the Marching Ants around SWF Files

As a result of the jury decision in Microsoft’s Eolas patent lawsuit, Microsoft created an Internet Explorer update that would force users to activate media items coded with “embed”, “applet” or “object” tags. The result of this decision is that while movies may play and function correctly in Firefox, Safari and other browsers, users must click Flash media to “activate” it and accept ActiveX alerts on pages containing Quicktime media.

A solution to this obstacle has been dutifully created and promoted by Geoff Stearns. His “SWFObject” (grab it here) is a simple Javascript which enables developers to embed Flash files into sites without using “embed”, “applet” or “object”.

For instance, we used to have our home page navigation coded like this:

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="796" height="72" id="nav_home" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="nav_home.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<embed src="nav_home.swf" quality="high" bgcolor="#ffffff" width="796" height="72" name="nav_home" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>

With Mr. Stearns’ SWFObject, the syntax is shorter and effective. In the head, we include his Javascript file:
<script type="text/javascript" src=js/swfobject.js"></script>

And in the body, we replace the object and embed tags with this:
<div id="navcontent"></div>
<script type="text/javascript">
// <![CDATA[
var a = new SWFObject(swf/nav_home.swf", "fo_nav", "796", "72", "7,0,0,0", "#FFFFFF", true);
a.addParam("allowScriptAccess", "sameDomain");
a.addParam("quality", "high");
a.addParam("scale", "noscale");
a.write("navcontent");
// ]]>
</script>

The SWFObject allows for you to add all the parameters of Adobe’s default export using the addParam function.

To make things better, you can still pass variables to and from the Flash from PHP by adding the FLASHVARS variable with Stearns’ addParam function.

For instance, our interior navigation, with the PHP/Smarty variables, looks like this:

<div id="navcontent"></div>
<script type="text/javascript">
// <![CDATA[
var a = new SWFObject(swf/nav_home.swf", "fo_nav", "796", "72", "7,0,0,0", "#FFFFFF", true);
a.addParam("allowScriptAccess", "sameDomain");
a.addParam("quality", "high");
a.addParam("scale", "noscale");
a.addParam("FLASHVARS", "section=‹$section›")
a.write("navcontent");
// ]]>
</script>

The resourceful Stearns’ provides the identical solution for embedding Quicktime movies to eradicate Microsoft’s ActiveX alert window.

Include his QTObject Javascript file in the head of your page:

<script type="text/javascript" src="js/qtobject.js"></script>

And modify the code for your Quicktime video to use his format:
<div id="video">
<script type="text/javascript">
// <![CDATA[
var myQTObject = new QTObject("reels/web.mov", "qo_web", "480", "376");
myQTObject.write();
// ]]>
</script>
</div>

Incorporating the add.Param function for Quicktime parameters, you can easily add poster movies and controller options the same way you would in Flash:
<div id="video">
<script type="text/javascript">
// <![CDATA[
var myQTObject = new QTObject("reels/reel_web_posterMovie.mov", "qo_web", "480", "376");
myQTObject.addParam("qtsrc", "reels/reel_web_posterMovie.mov");
myQTObject.addParam("href", "reels/web.mov");
myQTObject.addParam("target", "myself");
myQTObject.addParam("controller", "false");
myQTObject.write();
// ]]>
</script>
</div>

Recommended Links

SWFObject Download (zip)
QTObject Download (zip)
SWFObject Documentation
QTObject Documentation

Tags | activate flash, adobe, citarella, fix, fla, flash object, html, issue, macromedia, microsoft activex, patch, php, problem, quicktime embed, swf, swf object

16

Dec
2005

Information Resources

Permalink

By admin404

Online Site and Application Cost Sheet

December 16, 2005 - Information Resources

Some of the other factors that influence Web pricing

Outside of Web design and development, there are many factors that could influence your overall pricing. Below is a list of some of these factors, broken down by site type. Please note that this is not a complete listing, nor should it be used as a cost estimate. This resource is provided to increase awareness only. For a more comprehensive estimate for Web site and application costs, please contact an ERA404 representative here.

 CORPORATE / NOVELTY SITES (Non-ecommerce)

Domain Name Registration

~$8 – $25/yr

If you’re interested in owning mysite.com, you’ll need to lease that name from an online domain name registrar. This enables you to have control over that User Registry Listing (URL) or Domain Name.

Examples: networksolutions.com, godaddy.com

DNS Hosting

~$25 – $100/yr

Each server has a unique Internet Protocol (IP) address that identifies it from other servers. DNS Hosts provide access to databases which translate your URL (mysite.com) to the server’s IP address (66.33.204.50). This way, when a user types in your URL, they are connected to the correct server. If you consider the database to be a telephone book for the Internet, DNS hosts are the operators.

Examples: networksolutions.com, tzo.com

Web hosting

~$100 – $1200.00/yr

Web hosts provide storage space for you to house your Web site or application. Imagine that they are your virtual landlord. Pricing for Web hosts varies as much as pricing for apartment rentals.

Examples: ERA404.net, rochenhost.com, servermatrix.com

 ECOMMERCE SITES

Payment Gateways

~ $300/yr

Payment Gateways allow for credit card processsing to take place. Their services include verification of existing and operational accounts (with Credit Card Associations or Customer Issuing Banks), verification of funds, billing address & information, and transaction. Payment Gateways traditionally have an initial set-up fee ($150 – $300) and a limit to monthly transactions (500) which has occurance costs ($.10) for each transaction over the limit.

Examples: Verisign, Authorize.net, 2checkout.com

Internet Merchant Accounts (Provided by Acquiring Banks)

Various

Internet Merchant Accounts are the same as standard business merchant accounts and are provided by banking institutions. These accounts accept the transfers of funds from the Payment Gateway and ultimately receive the payment from online consumers.

Discount Rates, or percentages of each sale (2 – 5%), fees for manual transactions (rather than online purchases), etc.

Examples: Merchant E-Solutions, Wells fargo

Static IP

~$120-300/yr

The difference between a static Internet Protocol (IP) and a dynamic IP is consistency. Every time a user is routed to your site, they’ll always be accessing the same IP. Dynamic IPs are assigned and reassigned regularly depending on the host. All ecommerce sites require static IPs, which cost approximately $15/month.

Secure Socket Layer (SSL)

~$50 – 350/yr

Secure Socket Layer Encryption is the industry standard for all ecommerce and ebanking sites. It’s packaged in with browsers to ensure that data being transmitted is readable to its intended recipient only.

Examples: verisign.com, instantssl.com

 

For More Information

Contact ERA404 for more information on other costs that may be associated with ecommerce and non-ecommerce sites or design and development estimates by clicking here.

Tags | application costs, citarella, corporate, dns hosting, ecommerce, internet merchant accounts, novelty, online site, payment gateways, secure socket layer, static ip, web hosting

28

Jun
2005

Information Resources

Permalink

By admin404

But I’m Not Spam

June 28, 2005 - Information Resources

Preventative measures can help your emails from becoming false positives

Your contacts are primarily made of people who’ve asked you to contact them or people who would be interested in receiving your emails.

However, some of these contacts may have Spamblocking services that could mis-interpret your emails as Spam. This is far worse than a contact just not receiving an email. If your Internet Protocol (IP) is added to a Spam Sender list because of this, it may stop ALL emails from being received.

Unfortunately, these “false positives” have to exist to allow spam-blocking systems to function. But there are a number of methods you could employ to dramatically lessen your chances of being marked as spam. Please avoid the following when creating emails:

  1. Body of message incorporates a tracking ID number
  2. Body of message contains a large block of hexadecimal code
  3. Body of message contains one or more lines of “YELLING” (i.e., all-caps)
  4. Message includes Microsoft executable program
  5. Message body has at least 70 percent blank lines
  6. Message header indicates message was sent directly from dynamic IP address
  7. Message From field appears to not contain a real name
  8. Message From field ends in numbers
  9. Message header contains numbers mixed in with letters
  10. Message subject includes the term “offer”
  11. Message to: field contains spaces
  12. Message Reply to field is empty
  13. Subject has exclamation mark and question mark
  14. Subject is ALL-CAPS
  15. Message subject starts with an advertising tag
  16. Message From: field contains the term “friend”
  17. Subject contains “As Seen”
  18. Subject starts with dollar amount
  19. Subject contains “Double Your”
  20. Subject contains “For Only”
  21. Subject contains “FREE”
  22. Subject contains “Free Instant”
  23. Message contains excessive images without much text
  24. Message body contains the term “nobody’s perfect”
  25. Message body claims not to be spam

Questions?

Contact ERA404 for more questions about preventing your mail from looking like spam. Click here.

Tags | false positives, methods, resource, spam, spamblocking, tips, tricks