<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
        "http://www.w3.org/TR/REC-html40/loose.dtd">
<HTML LANG="en-US"><HEAD>
<TITLE>META Tag Snob: Tags for Controlling Web Browsers</TITLE>
<base href="http://www.bauser.com/websnob/meta/browsers.html">
<META NAME="description" CONTENT="A list META tags designed to control
web browsers and their plugins.">
<meta name="keywords" content="meta tags, browsers"> 
<meta name="DCTERMS.created" scheme="DCTERMS.W3CDTF" content="2002-05-25">

<!--#exec cgi="/websnob/cgi/head.pl"-->
<script src="pop.js" type="text/javascript"></script>
</HEAD><BODY BGCOLOR="#000000" TEXT="#00FF00" LINK="#6699FF" VLINK="#FF00FF">

<p id="breadcrumbs"><a href="/websnob/" rel="Start">Websnob</a> &gt;
<a href="/websnob/meta/">META Tags</a> &gt;
<strong>Controlling Web Browsers</strong></p>

<p class="advert"><!--#exec cgi="../adverts/ad_1.pl"--></p>

<h1>Controlling web browsers with <samp>META</samp></h1>

<p>When the <samp>META</samp> element was created in 1993, nobody was
thinking about controlling web browswer with them; <samp>META</samp> was
intended only to provide metainformation to robots and/or help authors
interact with their web servers. That changed in March 1995 when <a
href="http://www.netscape.com/">Netscape</a> released Navigator 1.1.</p>

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

<p>In theory, any server-side <acronym title="Hypertext Tranfer
Protocol">HTTP</acronym> header can be re-implemented as an <acronym
title="Hypertext Markup Language">HTML</acronym> <samp>META</samp> 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 <samp>META</samp> tags recommended by HTML
specifications, and/or those <samp>META</samp> values known to actually
effect browsers (or their plugins).</p>

<h2 id="Bulletin-Date">name="Bulletin-Date"<br>
name="Bulletin-Image"<br>
name="Bulletin-Text"</h2>

<p><var>Bulletin-Text</var>, <var>Bulletin-Image</var>, and
<var>Bulletin-Date</var> were used by page authors to inform users of the
<a href="http://web.archive.org/web/*/http://www.firstfloor.com/">First
Floor Software</a>'s Smart Bookmarks (a browser bookmark-monitoring
utility) of updates to a site. <var>Bulletin-Text</var> contained the
message to be sent to SmartMarks users, while <var>Bulletin-Date</var>
informed them when the message was written. I'm not actually sure what
<var>Bulletin-Image</var> was for.</p>

<p>In the mid-1990s, at least two authoring programs (<a
href="http://www.hotmetalpro.com/">HoTMetaL PRO</a> and <a
href="http://www.lotus.com/products/r5web.nsf/webhome/nr5noteshp">Lotus
Notes</a>) encouraged web authors to use the <var>Bulletin</var> 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.</p>

<p>The concept of using <samp>META</samp> tags to send news bulletins to
readers was resurrected by <a href="engines.html#NetInsert">the
web directory NetInsert</a>, who use a <var>news</var> tag for a similar
purpose.</p> 

<p>Reference: <a
href="http://web.mit.edu/hotmetal_v3.0/www/Chapter5.html">HoTMetaL PRO 3.0:
Extensions to HTML</a></p>


<h2 id="Content-Script-Type">http-equiv="Content-Script-Type"</h2>

<p>According to the <a href="/websnob/html4/">HTML 4.0</a> specifications,
HTML documents should use <var>Content-Script-Type</var> to designate the
default langauge used for client-side scripts. The <samp>content</samp> of
this <samp>META</samp> tag is a single <acronym title="Multimedia Internet
Mail Extension">MIME</acronym> content type. JavaScript, for example is
<var>text/javascript</var>.</p>

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

<p>Reference: <a href=
"http://www.w3.org/TR/REC-html40/interact/scripts.html#default-script"
>HTML 4.0: The default scripting language</a></p>

<h2 id="Content-Style-Type">http-equiv="Content-Style-Type"</h2>

<p>The HTML 4.0 specifications also state that <var>Content-Style-
Type</var> should be used to designate the default style sheet language for
a document. As with the <var>Content-Script-Type</var>, the
<samp>content</samp> is a MIME content type; the content type for <acronym
title="Cascading Style Sheets"><a href="/websnob/CSS/">CSS</a></acronym> is
<var>text/css</var>.</p>

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

<p>Reference: <a href=
"http://www.w3.org/TR/REC-html40/present/styles.html#default-style" >HTML
4.0: 14. 2.1 Setting the default style sheet language</a></p> 

<h2 id="Content-Type">http-equiv="Content-Type"</h2>

<p>According to the HTML specifications, this <samp>META</samp> 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 <samp>META</samp> header on every page.</p>

<p>In practice, you don't need this header as long as your page is served
entirely in <acronym title="# American Standard Code for Information
Interchange">ASCII</acronym>, since that's what all browser assume they're
receiving unless told otherwise. On the other hand, this is one of the few
<samp>META</samp> 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.</p> 

<p>Reference: <a
href="http://www.w3.org/TR/REC-html40/charset.html#h-5.2.2">HTML 4.0: 5.2.2
Specifying the character encoding</a></p>


<h2 id="Expires">http-equiv="Expires"</h2>

<p>References: <a
href="http://www.alternic.org/rfcs/rfc2000/rfc2068.txt">RFC 2068</a> and <a
href="http://developer.netscape.com/docs/manuals/htmlguid/tags3.htm">HTML Tag Manual</a>.</p>

<h2 id="Ext-cache">http-equiv="Ext-cache"</h2>

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

<p>Reference: <a href=
"http://wp.netscape.com/eng/mozilla/2.0/relnotes/unix-2.0.html" >Welcome to
Netscape Naviagtor Version 2.0</a></p>

<h2 id="imagetoolbar">http-equiv="imagetoolbar"</h2>

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

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

<p>Reference: <a href=
"http://msdn.microsoft.com/library/default.asp?url=/workshop/misc/mypictures/mypictures_ovw.asp"
>Microsoft Developers Network: About My Pictures Photo Support</a></p>

<h2 id="MSSmartTagsPreventParsing">name="MSSmartTagsPreventParsing"</h2>

<p><dfn>Smart Tags</dfn> 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.</p>

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

<p>Reference: <A
href="http://www.theregister.co.uk/content/4/19943.html">The Register: Web
sites! Banish those WinXP, IE6 smart tag blues!</a></p> 

<h2 id="Page-Enter">http-equiv="Page-Enter"<br>
http-equiv="Page-Exit"</h2>

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

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

<p>(<acronym title="Internet Explorer 5.0">IE5</acronym> (and higher)
recognize a differenct <samp>content</samp> syntax, in the format
<var>progid:transition</var>, where <var>transition</var> 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
<acronym title="Internet Explorer 4.0">IE4</acronym> filters. The
<var>Duration=</var> portion of the transition is included in the
parenthetical section of the transition name.)</p>

<div class="table"> 
<table summary="A list of transition values, their effects, and their IE5 equivilents.">
<thead>
<tr align="left"><th scope="col">#</th> <th scope="col">effect</th> <th scope="col" abbr="IE5">Explorer 5 equivilent</th></tr>
</thead><tbody>
<tr><td>0</td> <td>Box in</td> <td>DXImageTransform.Microsoft.Iris(irisstyle='SQUARE', motion='in')</td></tr> 
<tr><td>1</td> <td>Box out</td> <td>DXImageTransform.Microsoft.Iris(irisstyle='SQUARE', motion='out')</td></tr>
<tr><td>2</td> <td>Circle in</td> <td>DXImageTransform.Microsoft.Iris(irisstyle='CIRCLE', motion='in')</td></tr>
<tr><td>3</td> <td>Circle out</td> <td>DXImageTransform.Microsoft.Iris(irisstyle='CIRCLE', motion='out')</td></tr> 
<tr><td>4</td> <td>Wipe up</td> <td>DXImageTransform.Microsoft.Blinds(direction='up', bands=1)</td></tr>
<tr><td>5</td> <td>Wipe down</td> <td>DXImageTransform.Microsoft.Blinds(direction='down', bands=1)</td></tr>
<tr><td>6</td> <td>Wipe right</td> <td>DXImageTransform.Microsoft.Blinds(direction='right', bands=1)</td></tr> 
<tr><td>7</td> <td>Wipe left</td> <td>DXImageTransform.Microsoft.Blinds(direction='left', bands=1)</td></tr>
<tr><td>8</td> <td>Vertical blinds</td> <td>DXImageTransform.Microsoft.Blinds(direction='right')</td></tr>
<tr><td>9</td> <td>Horizontal blinds</td> <td>DXImageTransform.Microsoft.Blinds(direction='down')</td></tr>
<tr><td>10</td> <td>Checkerboard across</td> <td>DXImageTransform.Microsoft.CheckerBoard(direction='right')</td></tr>
<tr><td>11</td> <td>Checkerboard down</td> <td>DXImageTransform.Microsoft.CheckerBoard(direction='down')</td></tr> 
<tr><td>12</td> <td>Random dissolve</td> <td>DXImageTransform.Microsoft.RandomDissolve</td></tr>
<tr><td>13</td> <td>Split vertical in</td> <td>DXImageTransform.Microsoft.Barn(orientation='vertical', motion='in')</td></tr>
<tr><td>14</td> <td>Split vertical out</td> <td>DXImageTransform.Microsoft.Barn(orientation='vertical', motion='out')</td></tr>
<tr><td>15</td> <td>Split horizontal in</td> <td>DXImageTransform.Microsoft.Barn(orientation='horizontal', motion='in')</td></tr>
<tr><td>16</td> <td>Split horizontal out</td> <td>DXImageTransform.Microsoft.Barn(orientation='horizontal', motion='out')</td></tr>
<tr><td>17</td> <td>Strips left down</td> <td>DXImageTransform.Microsoft.Strips(motion='leftdown')</td></tr>
<tr><td>18</td> <td>Strips left up</td> <td>DXImageTransform.Microsoft.Strips(motion='leftup')</td></tr>
<tr><td>19</td> <td>Strips right down</td> <td>DXImageTransform.Microsoft.Strips(motion='rightdown')</td></tr>
<tr><td>20</td> <td>Strips right up</td> <td>DXImageTransform.Microsoft.Strips(motion='rightup')</td></tr>
<tr><td>21</td> <td>Random bars horizontal</td> <td>DXImageTransform.Microsoft.RandomBars(orientation='horizontal')</td></tr>
<tr><td>22</td> <td>Random bars vertical</td> <td>DXImageTransform.Microsoft.RandomBars(orientation='vertical')</td></tr> 
<tr><td>23</td> <td>Random </td> <td>no equivilent</td></tr>
</tbody></table>
</div>

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

<p>Reference: <a href=
"http://msdn.microsoft.com/library/default.asp?url=/workshop/author/filter/filters.asp"
>Introduction to Filters and
Transitions</a>

<h2 id="MSThemeCompatible">HTTP-EQUIV="MSThemeCompatible"</h2>

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

<p>Reference: <a href=
"http://msdn.microsoft.com/library/en-us/dnie60/html/whatsnewpublicpreview.asp"
>Microsoft.com: Highlights of Internet Explorer
6</a></p>

<h2 id="PICS-Label">http-equiv="PICS-Label"</h2>

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

<p>Reference: <a href="http://www.w3.org/TR/REC-PICS-labels#Embedding">PICS
Label Distribution Label Syntax and Communication Protocols</a></p>

<h2 id="Pragma">http-equiv="Pragma"</h2>

<p>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
<samp>content</samp> values. In practice, the only value supported by
browsers is <var>no-cache</var>, which prevents browsers from caching the
tagged page. <a href="#Expires">Expires</a> has more widespread support.</p>

<p>Reference: <a
href="http://www.netscape.com/security/notes/nocache.html">No-Cache Meta-
Tag Bug</a></p>

<h2 id="ProgId">name="ProgId"</h2>

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

<p>Reference: <a href="http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/properties/name_1.asp"
>Microsoft Developers Network: NAME Attribute | name Property</a></p>

<h2 id="Rating">name="Rating"</h2>

<p>Before the spread of <a href="#PICS-Label">PICS labels</a>, <a
href="http://www.weburbia.com/">Weburbia</a> was promoting the
<var>rating</var> 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 <samp>content</samp> values were <var>Safe for Kids</var>,
<var>Parental Guidance</var>, and <var>Adults Only</var>.</p>

<p>Although <acronym title="Platform for Internet Content
Selection">PICS</acronym> is now widely supported, I don't know of any browser
or plugin that uses Weburbia's original <var>rating</var> tag. It's still
fairly widespread, though, because it's included in a lot of "meta
tag generator" utilities.</p>

<p>Adding to the confusion over this useless tag is the fact that a<a
href="http://vancouver-webpages.com/META/mk-metas.rich.html">META Tag
Builder at Vancouver Webpages</a> promoted <var>rating</var> using a
different set of <samp>content</samp> values modeled on motion picture
ratings (as used in British Columbia in the early 1990s). The "Vancouver
set" for <var>rating</var> <samp>content</samp> included <var>General</var>,
<var>14 years</var>, <var>Restricted</var>, and <var>Mature</var>.</p> 

<p>References: <a href=
"http://web.archive.org/web/19970208135241/http://www.weburbia.com/safe/index.shtml"
 >Weburbia.com: Safe for Kids (8 Feb 1996)</a> and <a
href=
"http://vancouver-webpages.com/META/about-mk-metas.rich.html#Rating"
>Vancouver Webpages: META Tag Builder</a></p>

<h2 id="Refresh">http-equiv="Refresh"</h2>

<p><var>Refresh</var> was the first <samp>META</samp> 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.)
<var>Refresh</var> 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.</p>

<p>"Client-side-pull" using <var>Refresh</var> 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 <var>Refresh</var>'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.</p>

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

<p>Optionally, <samp>content</samp> may follow the integer with a semi-colon
 (;) and <var>URL=</var> 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.</p>

<p><code>
&lt;meta http-equiv="Refresh" content="10; URL=http://www.example.com/"&gt;
</code></p> 

<p>This version of
<var>Refresh</var>, as noted earlier, is widely used in place of true HTTP
redirects to move readers from one page to another. <em>This should not be
used when the destination is permanent replacement for the current
page.</em> Search engines understand HTTP headers, but most don't follow
<var>Refresh</var> tags, and none of them have no way to know if
<samp>META</samp> <var>Refresh</var> is meant to be permanent. If you trust
<var>Refresh</var> 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 <var>Refresh</var> interval to 0
(zero) seconds.</p>

<p>Reference: <a
href="http://wp.netscape.com/assist/net_sites/pushpull.html">Netscape.com:
An Exploration of Dynamic Documents</a> 

<h2 id="save">name="save"</h2>

<p>The <var>save</var> tag is part of Internet Explorer 5.0's "Persistance"
functions, which allow browsers to save state when saving <acronym
title="Dynamic Hypertext Markup Language">DHTML</acronym> 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.)</p>

<p><var>save</var> 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 <samp>content</samp> values for
<var>save</var> are <var>favorite</var>, <var>history</var> and
<var>snapshot</var>.</p>

<p>Reference: <a href=
"http://msdn.microsoft.com/library/default.asp?url=/workshop/author/persistence/overview.asp"
>Microsoft.com: Introduction to Persistence</a></p>

<h2 id="Set-Cookie">http-equiv="Set-Cookie"</h2>

<p>This is the HTML version of the HTTP "Set-Cookie" header that Netscape
defined in 1997 (and first implemented in Navigator 2.0).
<var>Set-Cookie</var> is implemented in most versions of Netscape
Navigator, but you're better off setting (and manipulating) cookies using
server headers and <acronym title="Common Gateway Interface">CGI</acronym>
scripts.</p>

<p>Reference: <a
href="http://developer.netscape.com/docs/manuals/htmlguid/tags3.htm"
>HTML Tag Manual</a>.</p>

<h2 id="Site-Enter">http-equiv="Site-Enter"<br>
http-equiv="Site-Exit"</h2>

<p>These two tags have the same function (and <samp>content</samp> syntax)
as <a href="#Page-Enter">Page-Enter and Page-Exit</a>, but Internet
Explorer will only use these tags when transiting between pages with
different domain names.</p>
 
<p>Reference: <a
href="http://msdn.microsoft.com/library/default.asp?url=
/workshop/author/filter/filters.asp">Introduction to Filters and
Transitions</a>

<h2 id="Window-target">http-equiv="Window-target"</h2>

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

<p>References: 
<a href="http://wp.netscape.com/eng/mozilla/2.0/relnotes/demo/target.html">Netscape.com: Targetting Windows</a> and 
<a href="http://msdn.microsoft.com/library/en-us/dnmind99/html/geek0499.asp">Microsoft.com: Geek to Geek, April 1999</a></p>

<p class="advert"><!--#exec cgi="/websnob/adverts/ad_2.pl"--></p>
<!--#exec cgi="/websnob/cgi/menu.pl"-->
<!--#exec cgi="/websnob/cgi/2002"-->
</BODY></HTML>

