Controlling web browsers with META

When the META element was created in 1993, nobody was thinking about controlling web browswer with them; META was intended only to provide metainformation to robots and/or help authors interact with their web servers. That changed in March 1995 when Netscape released Navigator 1.1.

Realizing that server administrators almost never want to give mere users the power to rewrite server headers using the http-equiv header, Netscape decided to do an end-run around the server by letting Navigator 1.1 read and implement commands in the http-equiv headers. For better or for worse, that unleashed a slew of half-baked ideas for using META to control browsers, not all of which are Netscape's. (In fact, Microsoft uses META headers more often than Netscape.)

In theory, any server-side HTTP header can be re-implemented as an HTML META header, but most browsers only recognize a few. On the other hand, most browsers accept a variety instruction that don't have server equivilents. This list only includes browser-affecting META tags recommended by HTML specifications, and/or those META values known to actually effect browsers (or their plugins).

name="Bulletin-Date"
name="Bulletin-Image"
name="Bulletin-Text"

Bulletin-Text, Bulletin-Image, and Bulletin-Date were used by page authors to inform users of the First Floor Software's Smart Bookmarks (a browser bookmark-monitoring utility) of updates to a site. Bulletin-Text contained the message to be sent to SmartMarks users, while Bulletin-Date informed them when the message was written. I'm not actually sure what Bulletin-Image was for.

In the mid-1990s, at least two authoring programs (HoTMetaL PRO and Lotus Notes) encouraged web authors to use the Bulletin tags, so they occasionally pop up on old web pages. Smart Bookmarks is no longer available, except for the free evaluation version, which is still found at one or two software archives.

The concept of using META tags to send news bulletins to readers was resurrected by the web directory NetInsert, who use a news tag for a similar purpose.

Reference: HoTMetaL PRO 3.0: Extensions to HTML

http-equiv="Content-Script-Type"

According to the HTML 4.0 specifications, HTML documents should use Content-Script-Type to designate the default langauge used for client-side scripts. The content of this META tag is a single MIME content type. JavaScript, for example is text/javascript.

If all your client-side scripts are part of SCRIPT elements, Content-Script-Type isn't necessary, since you're required to label SCRIPT element's content-types using the type attribute. If you're using intrinsic events attributes (like onload or onclick), you technically must include Content-Script-Type to tell browsers which language is used for intrinsic events. (Right now, all major browser assume text/javascript for intrinsic events, but this could change in the future. Adding Content-Script-Type now will avoid nasty surprises in the future.

Reference: HTML 4.0: The default scripting language

http-equiv="Content-Style-Type"

The HTML 4.0 specifications also state that Content-Style- Type should be used to designate the default style sheet language for a document. As with the Content-Script-Type, the content is a MIME content type; the content type for CSS is text/css.

The Content-Style-Type header isn't necessary if you use external style sheets (LINK has a type attribute for declaring content-types) or place your style sheets inside the SCRIPT element (which also has a type attribute). On the other hand, if you're using the style attribute to add styles to individual HTML elements, Content-Style-Type must be used to indicate which style sheet language the style attribute uses. (While current browsers seem to assume CSS is the only choice, there are other choices. If you use the style attribute, you should start setting Content-Style-Type now, so that your pages remain compatible with any future browser implementing multiple style sheet languages.)

Reference: HTML 4.0: 14. 2.1 Setting the default style sheet language

http-equiv="Content-Type"

According to the HTML specifications, this META header should be used when a web server isn't providing a complete Content-Type HTTP header (which should include a "charset" value, if it's responding to HTTP 1.1 requests). So if your server isn't including charset information, you should have this META header on every page.

In practice, you don't need this header as long as your page is served entirely in ASCII, since that's what all browser assume they're receiving unless told otherwise. On the other hand, this is one of the few META headers that most browser will use to override the server headers, so you should definitely use it if you're publishing non-ASCII web pages.

Reference: HTML 4.0: 5.2.2 Specifying the character encoding

http-equiv="Expires"

References: RFC 2068 and HTML Tag Manual.

http-equiv="Ext-cache"

Netscape Navigator 2.0 uses Ext-cache to define the location (a file on the user's computer) of a read-only browser cache. Ext-cache is only used for HTML files distributed on disk.

Reference: Welcome to Netscape Naviagtor Version 2.0

http-equiv="imagetoolbar"

Microsoft Internet Explorer 6.0 introduced a new feature called the "My Pictures tool bar". Whenever an IE user mouses over an image file, the tool bar appears, providing quick access to some basic features like saving images to disk.

http-equiv="imagetoolbar exists for the benefit of those overprotective webmasters who don't even want people to think about copying their images. Placing this META tag in a document (with content set to false or no) will instruct IE to not display the tool bar for images on that page.

Reference: Microsoft Developers Network: About My Pictures Photo Support

name="MSSmartTagsPreventParsing"

Smart Tags were a controversial form of web annotation introduced by Microsoft in early versions of Windows XP. Smart Tags are a form of third-party hyperlink: they allowed Microsoft (or any entity using the format) to introduce their own hyperlinks into any page viewed in Internet Explorer.

The public outcry against Smart Tags soon forced the technology off the market, but the MSSmartTagsPreventParsing tag remains as a monument. When its content is set to True, Internet Explorer will not display Smart Tags on the page containing this META tag.

Reference: The Register: Web sites! Banish those WinXP, IE6 smart tag blues!

http-equiv="Page-Enter"
http-equiv="Page-Exit"

The only feature of Internet Explorer's dynamic filters system that doesn't stomp all over HTML, CSS, and ECMAscript standards, these two META headers all authors to designate a "transition" special effect that occurs when a user enters or exits the tagged web document.

The original (and backwards-compatible) version of this tag uses a content value of revealTrans(Duration=1.0,Transition=0), where the number following Duration= indicates how many seconds the transition should last, and the number following Transition= indicates one of the 24 possible transitions listed in the second colum of the table below.

(IE5 (and higher) recognize a differenct content syntax, in the format progid:transition, where transition is replaced with the full name of the filter. There are hundreds of combinations of filters in IE5: column 3 of the table lists which IE5 filters are equivilent to the IE4 filters. The Duration= portion of the transition is included in the parenthetical section of the transition name.)

# effect Explorer 5 equivilent
0 Box in DXImageTransform.Microsoft.Iris(irisstyle='SQUARE', motion='in')
1 Box out DXImageTransform.Microsoft.Iris(irisstyle='SQUARE', motion='out')
2 Circle in DXImageTransform.Microsoft.Iris(irisstyle='CIRCLE', motion='in')
3 Circle out DXImageTransform.Microsoft.Iris(irisstyle='CIRCLE', motion='out')
4 Wipe up DXImageTransform.Microsoft.Blinds(direction='up', bands=1)
5 Wipe down DXImageTransform.Microsoft.Blinds(direction='down', bands=1)
6 Wipe right DXImageTransform.Microsoft.Blinds(direction='right', bands=1)
7 Wipe left DXImageTransform.Microsoft.Blinds(direction='left', bands=1)
8 Vertical blinds DXImageTransform.Microsoft.Blinds(direction='right')
9 Horizontal blinds DXImageTransform.Microsoft.Blinds(direction='down')
10 Checkerboard across DXImageTransform.Microsoft.CheckerBoard(direction='right')
11 Checkerboard down DXImageTransform.Microsoft.CheckerBoard(direction='down')
12 Random dissolve DXImageTransform.Microsoft.RandomDissolve
13 Split vertical in DXImageTransform.Microsoft.Barn(orientation='vertical', motion='in')
14 Split vertical out DXImageTransform.Microsoft.Barn(orientation='vertical', motion='out')
15 Split horizontal in DXImageTransform.Microsoft.Barn(orientation='horizontal', motion='in')
16 Split horizontal out DXImageTransform.Microsoft.Barn(orientation='horizontal', motion='out')
17 Strips left down DXImageTransform.Microsoft.Strips(motion='leftdown')
18 Strips left up DXImageTransform.Microsoft.Strips(motion='leftup')
19 Strips right down DXImageTransform.Microsoft.Strips(motion='rightdown')
20 Strips right up DXImageTransform.Microsoft.Strips(motion='rightup')
21 Random bars horizontal DXImageTransform.Microsoft.RandomBars(orientation='horizontal')
22 Random bars vertical DXImageTransform.Microsoft.RandomBars(orientation='vertical')
23 Random no equivilent

Page transitions only work in Internet Explorer, but they're essentially harmless. Transition filters do not work on pages using the FRAMESET element; framed pages need the transition set on each individual frame.

Reference: Introduction to Filters and Transitions

HTTP-EQUIV="MSThemeCompatible"

When the content of this tag is set to No, it tells the Windows XP version of Internet Explorer to not render buttons and scrollbars in XP's default style.

Reference: Microsoft.com: Highlights of Internet Explorer 6

http-equiv="PICS-Label"

PICS-Label is used to embed a content rating in a web page. Browsers that understand PICS-Label can be configured to block web pages that contain content objectionable to the user.

Reference: PICS Label Distribution Label Syntax and Communication Protocols

http-equiv="Pragma"

This is the HTML version of a server header that nobody uses anymore. In theory, it can control browser's caching functions with a variety of content values. In practice, the only value supported by browsers is no-cache, which prevents browsers from caching the tagged page. Expires has more widespread support.

Reference: No-Cache Meta- Tag Bug

name="ProgId"

ProgId tells Internet Explorer 5.0 which software program the page author has designated as his/her default editor for the page. For example, a content of word.document tells IE5 to use Microsoft Word for editing a page.

Reference: Microsoft Developers Network: NAME Attribute | name Property

name="Rating"

Before the spread of PICS labels, Weburbia was promoting the rating tag as a way to label whether web pages were appropriate for viewing by minors. Weburbia's rating scheme was pretty simple, so the only recognized content values were Safe for Kids, Parental Guidance, and Adults Only.

Although PICS is now widely supported, I don't know of any browser or plugin that uses Weburbia's original rating tag. It's still fairly widespread, though, because it's included in a lot of "meta tag generator" utilities.

Adding to the confusion over this useless tag is the fact that aMETA Tag Builder at Vancouver Webpages promoted rating using a different set of content values modeled on motion picture ratings (as used in British Columbia in the early 1990s). The "Vancouver set" for rating content included General, 14 years, Restricted, and Mature.

References: Weburbia.com: Safe for Kids (8 Feb 1996) and Vancouver Webpages: META Tag Builder

http-equiv="Refresh"

Refresh was the first META tag designed to control a web browser, appearing in the documentation for Netscape Navigator 1.1. (Microsoft began supporting it with Internet Explorer 2.0.) Refresh is the basic building blocks of the now-discredited "push/pull" design philosophy: instead of waiting for a human being to request information from a server, the server can instruct the user's web browser to automatically request more information after a author-defined interval.

"Client-side-pull" using Refresh allows authors to redirect to force a reload of the currently viewed page or redirect one page to another. Althought Netscape intended reloading to be Refresh's primary use, most authors use it for redirecting, usually because they can't (or won't) set-up a proper redirect using server HTTP headers.

The required content for a Refresh header is an integer indicating how many seconds the browser should wait before refreshing. If content contains only an integer, the browser always reloads the currently-loaded page.

Optionally, content may follow the integer with a semi-colon (;) and URL= parameter, which instructs a web browser to reload the specified URL instead of the current page. The following example would redirect to http://www.example.com/ after 10 seconds.

<meta http-equiv="Refresh" content="10; URL=http://www.example.com/">

This version of Refresh, as noted earlier, is widely used in place of true HTTP redirects to move readers from one page to another. This should not be used when the destination is permanent replacement for the current page. Search engines understand HTTP headers, but most don't follow Refresh tags, and none of them have no way to know if META Refresh is meant to be permanent. If you trust Refresh to tell search engines you've moved your pages, you'll likely never get your new page listed. Even worse, many search engines refuse to index pages that set the Refresh interval to 0 (zero) seconds.

Reference: Netscape.com: An Exploration of Dynamic Documents

name="save"

The save tag is part of Internet Explorer 5.0's "Persistance" functions, which allow browsers to save state when saving DHTML objects. (For example, the persistance functions can tell IE5 to include the content of filled-in form when saving a web page to disk or a Favorites folder.)

save doesn't do anything by itself; it's merely used to mark a page as "persistant" so the browser will undertand instructions that appear later in the page. The acceptable content values for save are favorite, history and snapshot.

Reference: Microsoft.com: Introduction to Persistence

This is the HTML version of the HTTP "Set-Cookie" header that Netscape defined in 1997 (and first implemented in Navigator 2.0). Set-Cookie is implemented in most versions of Netscape Navigator, but you're better off setting (and manipulating) cookies using server headers and CGI scripts.

Reference: HTML Tag Manual.

http-equiv="Site-Enter"
http-equiv="Site-Exit"

These two tags have the same function (and content syntax) as Page-Enter and Page-Exit, but Internet Explorer will only use these tags when transiting between pages with different domain names.

Reference: Introduction to Filters and Transitions

http-equiv="Window-target"

The Window-target value tells Netscape Navigator that the tagged page must be loaded in the frame stated in the content attribute. This is useful, for example, in preventing a page from being framed (by setting content to _top). Navigator is the only browser that implements this function of META

References: Netscape.com: Targetting Windows and Microsoft.com: Geek to Geek, April 1999