Browsing Without Plug-ins

Because more and more browsing takes place on an ever wider variety of devices, and browsers on them, more and more consumers are browsing without plug-ins. Delivering a great site experience to consumers who browse the Web plug-in free is important work that sites must do to reach the widest audience. With HTML5, modern browsers and sites can deliver a great consumer experience even without plug-ins.

“Plug-in” refers broadly to browser extensions that run native client code using low-level browser interfaces.  For example, here is a basic description of Webkit’s approach; the IE equivalents are ActiveX controls and Browser Helper Objects. Web sites use a wide variety of plug-ins; Adobe Flash is one of the most common.

More and more common

Lots of Web browsing today happens on devices that simply don’t support plug-ins. Browsers that do support plug-ins offer many ways to run plug-in free.  IE9, for example, includes ActiveX Filtering. Other browsers offer add-ins to control plug-ins, like this one or this one. While plug-ins can be compiled to run inside 64-bit browsers, many developers only release versions that run inside 32-bit browsers; running a 64-bit browser is another way that running plug-in free is becoming more common:

64-Bit Windows includes both 32-Bit and 64-Bit Internet Explorer.
64-Bit Windows includes both 32-Bit and 64-Bit Internet Explorer.

Better and better experiences

Many sites today already offer a good experience when plug-ins are not available. For example, visiting Hotmail in IE9 with plug-ins unavailable (not installed, for example with the 64-bit browser, or disabled through ActiveX Filtering) works just fine:

Hotmail Inbox without plug-ins in IE9.
Hotmail Inbox without plug-ins in IE9.

Some sites require some consumer action before they work plug-in free. For example, YouTube without plug-ins works after visiting https://www.youtube.com/html5 and clicking “Join the HTML5 Trial”:

YouTube without plug-ins in IE9. On the left before, and on the right after, joining the HTML5 Trial. The context menu on the right shows that the video playing uses HTML5.
YouTube without plug-ins in IE9. On the left before, and on the right after, joining the HTML5 Trial. The context menu on the right shows that the video playing uses HTML5.

Other sites block some or all functionality with plug-ins disabled. For example, MSNBC.com and CNN.com work except for the videos; Gmail currently blocks IE9 with plug-ins disabled because it checks for the XHR ActiveX object rather than using the Web standard XHR that’s been available since IE7. The Web has evolved quite a bit since IE7 and so sites will want to go back and revisit code that is specific to older browsers or old versions of standards.

Showing how some sites disable some or all functionality without plug-ins.
Some sites disable some or all functionality without plug-ins.

Feature Detection: How site developers can make this even better

Many sites already offer great experiences when browser plug-ins aren’t available. There is a problem for consumers when sites do this based on the particular device or browser in use. For example, MSNBC.com videos work without plug-ins in a browser on a PC sending the User-Agent string of a device, but not in the same browser on the same PC sending a different User-Agent string:

MSNBC.com videos don't work in Apple Safari without Flash installed, and work fine on the same browser identifying itself as the iPad.
MSNBC.com in Apple Safari without Flash installed, and on the same browser identifying itself as the iPad.

Consumers are better off when developers use feature detection and fallback rather than hard-coding a site to specific browsers and configurations. For example, detecting and using HTML5 video in the absence of plug-ins gives the consumer a better experience. Many sites already perform the equivalent of this fallback when serving ads in the absence of plug-ins, showing that this approach is a practical and scalable solution.

The consumer experience is better when sites follow best practices to test for the standards-based feature first and fall back to plug-ins only if necessary. For example, here are good and bad patterns for feature detection of XMLHttpRequest:

// BAD PATTERN: Don't do this!

var xhr = window.ActiveXObject

? new ActiveXObject("Microsoft.XMLHTTP")

: new XMLHttpRequest();

 

// Best Practice: Use Native XHR, if available

if (window.XMLHttpRequest) {

// If IE7+, Gecko, WebKit: Use native object

var xmlHttp = new XMLHttpRequest();

}

else if (window.ActiveXObject) {

// ...if not, try the ActiveX control

var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");

}

else {

// No XMLHTTPRequest mechanism is available.

}

Falling back gracefully to other content is important to avoid consumer frustration. For example, Gmail video chat degrades gracefully in the absence of Adobe Flash. Some sites provide fallback only for specific devices based on the user agent string or other browser-specific properties. This short-term solution doesn’t account for changes in browsers and how consumers browse.  Building an app is another approach that some sites (for example, IMDB.com) take for browsers on devices that don’t support plug-ins. User agent strings have not been a reliable or robust way to determine the specific HTML and script to serve for quite some time.

HTML5 capabilities make it possible for consumers to experience the Web today on more devices and in more configurations than ever before.  For Web developers, this means more opportunity for people to visit their sites, and more motivation to make their sites work even if plug-ins are not available.

—John Hrvatin, Program Manager, Internet Explorer