<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="/lib/xsl/devedge-1.00/article_en.xsl"?>
<nde:article 
  url="/viewsource/2002/gecko-compatibility/"
  xmlns="http://www.w3.org/1999/xhtml"
  xmlns:nde="http://devedge.netscape.com/2002/de"
  xmlns:ent="http://devedge.netscape.com/2003/ent"
  xml:lang="en">

  <nde:header>
  <nde:title>Netscape Gecko Compatibility Handbook</nde:title>

  <nde:category>TechNote</nde:category>
  <nde:pubdate year="2002" month="08" day="16"/>

  <nde:summary>How to diagnose and avoid common web site problems with 
        Netscape 7.x, AOL for Mac OS X and other browsers based 
        on the Netscape Gecko embeddable browser
  </nde:summary>

  <nde:channels>
    <nde:channel id="viewsource"/>
    <nde:channel id="gecko"/>
  </nde:channels>
</nde:header>

  <nde:head>
    <style type="text/css">
#id1 { text-decoration: line-through; }
#ID1 { text-decoration: underline; }
.class1 { font-size: 1em; }
.CLASS1 { font-size: 2em; }

    </style>
  </nde:head>

  <nde:content>

    <h2>
      Introduction
    </h2>
    <p>
	The goal of this handbook is to help you 
	update websites to work with standards-based browsers 
	and properly detect <a href="/central/gecko/">Netscape Gecko</a>. 
	</p>
	<p>If you're new to standards, you may find <a
        href="http://www.mozilla.org/docs/web-developer/upgrade_2.html"
         target="_top">Using Web Standards in Your Web Pages</a> a helpful introduction. 
	</p>
	<p>Netscape Gecko is an embeddable browser, developed as part of the 
	<a href="http://www.mozilla.org">Mozilla.org</a> open source project 
	and based on <a href="http://www.w3.org/">W3 Standards</a> rather 
	than the proprietary approaches of the past.
	Adhering to web standards simplifies cross-browser web 
	development and enables 
	<a href="http://www.mozilla.org/projects/ui/accessibility/">accessibility</a>. 
	</p>
    <h2>
      4.x vs. Gecko
    </h2>
 	<p>
	Since 1997, much of the Web's content has been developed for 
	Microsoft Internet Explorer 4 or Netscape Navigator 4. These 
	browsers were developed before the relevant W3 Standards for 
	<a href="/central/html/">HTML</a>, 
	<a href="/central/css/">CSS</a> and the 
	<a href="/central/dom/">DOM</a> existed.
	</p>
	<p>These earlier, non-standards based browsers 
	differed in several ways from Netscape Gecko:
	</p>

    <ol>
      <li>These browsers use proprietary (non-standard) HTML, CSS
      and JavaScript.</li>

      <li>Internet Explorer 4 and Netscape Navigator 4 share
      support for a large part of the HTML 3.2 standard and basic
      JavaScript.</li>

      <li>While they support the CSS 1 standard to some degree, the
      implementations are not complete and are non-standard.</li>

      <li>Neither Internet Explorer 4 or Netscape Navigator 4
      support the W3 DOM. Instead, each browser supports its own
      proprietary API for manipulating the content, style and
      position of HTML Elements in a web page.</li>

      <li>In addition, Internet Explorer 4 and Netscape Navigator 4
      use completely different methods of embedding.
      third-party software into the browser.</li>
    </ol>
    	<p>Netscape Gecko is a cross-platform browser engine, compatible with  
    	a number of Windows versions including Windows XP, as well as 
    	Mac and Linux. Because of Netscape Gecko's cross-platform
    	nature, functionality is generally very much
    	the same on different platforms unlike IE for Mac and IE for
    	Windows, which are very different programs and so may behave
    	quite differently from each other.</p>

	<h2>
	Quick Compatibility Test
	</h2>
	<p>If your site uses Netscape 4.x and Microsoft proprietary technologies,
	see <a
        href="http://www.mozilla.org/docs/web-developer/upgrade_2.html"
         target="_top">Using Web Standards in Your Web Pages</a> 
	for a quick tutorial on standards. This compatibility test will be most
	beneficial to sites using simple code or that have updated to support 
	standards.
	</p>
	<h3>1. Set Up Browsers For Testing</h3>
	<p>The various Netscape Gecko-based browsers do not contain "netscape"
	in the user agent string. Thus it's critical to verify that you are properly
	detecting browsers such as AOL for Mac OS X.</p>
	<p>
	You can either <a href="/central/gecko/2002/download/">download</a>
	the various browsers. Or if you are using user-agent detection,
	you can install a personal toolbar in Netscape 7.x or Mozilla 
	which allows you to "spoof" the user agent strings of the various Netscape Gecko
	browsers. Here's how:
	</p>
	<ol>
	<li>
	Launch <a href="http://channels.netscape.com/ns/browsers/7/download.jsp">
	Netscape 7.x</a> or <a href="ftp://ftp.mozilla.org/pub/mozilla/nightly/latest-1.0/mozilla-macosX-1.0.smi.bin">
	Mozilla 1.0 for OSX</a> (The benefit of using 
	Mozilla is that if you're only detecting "Netscape" or "Netscape6" you'll 
	see the issues right away.)
	</li>   
	<li>
	Go to the <a href="http://uabar.mozdev.org/source.html">ua bar site</a> 
	and click "Install xpi here."
	</li>
	<li>
	After re-starting your browser, select the AOL for Mac OS X
 	ua string from the toolbar dropdown list.
	</li>
	<li>Hit Enter -> click Shift-Reload to reload the page. 
	You can verify the string got changed by looking under Help | About.
	</li>
	</ol>
	<p>
	Then test using the ua string for CompuServe 7: Mozilla/5.0 
	(Windows; U; Win98; en-US; rv:0.9.4.2) Gecko/20020502 CS 2000 7.0/7.0. 
	If possible, also <a href="http://www.compuserve.com">download</a> 
	the actual client for testing.
	</p>
	<p>
	<h3>2. Review Your Results</h3>
	</p>
	<p>The following scenarios all relate to browser detection. For more 
	solutions to common problems please continue reading this handbook.
	</p>
	<h4>Problem: Site supports standards but does not look right</h4>
	<p>
	Try picking the Internet Explorer 6 ua string. If this works, 
	set up your detection to serve IE 6 content to visitors with "Gecko" in their ua strings.
	IE 6.x is actually more similar to Netscape Gecko browsers than Netscape 4.x is to 
	Netscape Gecko, due to increased support of W3C standards.
	</p>
	<h4>Problem: Site certified on Netscape 6.x incorrect in other browsers</h4>
	<p>
	If your site is already Netscape Gecko compatible, try switching 
	back to a Netscape 6 ua string. If it looks ok, you're probably detecting 
	only "Netscape" or "Netscape6." Detecting "Gecko" instead 
	is the easy way to fix this as well as accomodate users of Mozilla, CompuServe 7, etc.
	[<a href="/viewsource/2002/browser-detection/">Related article</a>]
	</p>
	<h4>Problem: Site has problems in all Netscape Gecko-based browsers</h4>
	<p>
	If you are still seeing problems, take a look at the troubleshooting 
	section of this handbook. Also if you're using Netscape 4.x and 
	Microsoft proprietary technologies,
	see <a
        href="http://www.mozilla.org/docs/web-developer/upgrade_2.html"
         target="_top">Using Web Standards in Your Web Pages</a> 
	for a quick tutorial on what's different in Netscape Gecko. 
	</p>
    <h2>
      AOL or CompuServe Problems
    </h2>
	<p>Even if your site works on Netscape 7.x, it is 
	important to test your site in <a href="http://www.aol.com">AOL for 
	Mac OS X</a> and <a href="http://www.compuserve.com">CompuServe 7</a> 
	to check for <a href="/viewsource/2002/browser-detection/">browser 
	detection</a> and network issues. 
	</p>
	<h3>Testing AOL From Within a Firewall</h3>
	<p>
	If you need to connect to AOL via a corporate firewall, 
	America Online has registered TCP/IP ports 5190 and 11523 so you can communicate with the 
	AOL client software. This way you can test your site on the AOL client from behind your firewall, 
	provided that your network administrators will open these ports. 
	</p>
	<p>
	You need to be connected to the Internet to test your site on AOL; 
	it isn't possible to access your site on a local 
	machine via your LAN, without an Internet connection. See 	
	<a href="http://webmaster.aol.com">Webmaster@AOL</a> for further information.
	</p>

    <h2>
      Solution Quick Reference
    </h2>

   <p>
    As discussed in Mozilla.org's 
    <a href="http://www.mozilla.org/docs/web-developer/upgrade_2.html" 
    target="_top">Using Web Standards in Your Web Pages</a>,  
    coding for cross-browser compatibility requires you write standard 
    markup that Netscape Gecko-based browsers, Netscape 4, and IE 
    browsers can render properly.
   </p>
   <p>
    Visit <a href="/central/">Tech Centrals</a> and 
    <a href="/viewsource/">DevEdge ViewSource</a> 
    for more topic-specific technotes and articles.
   </p>
    <table border="1" cellspacing="0">
      <thead>
        <tr>
          <th>Symptom</th>

          <th>Possible Problem</th>

          <th>Solution</th>
        </tr>
      </thead>

      <tbody>

        <tr>
          <td>Site works correctly in Netscape 6.x but not Netscape 7.x
          or other browsers based upon Netscape Gecko.</td>

          <td>The browser detection JavaScript detects Netscape 6.x
          but does not detect other Gecko-based browsers.</td>

          <td>Upgrade the browser detection JavaScript to detect
          "Gecko." [
          <a
          href="/viewsource/2002/browser-detection/"
          target="_top">related article</a>

          ]</td>
        </tr>
        <tr>
          <td>Content differs in Netscape Gecko browsers and
          Internet Explorer</td>

          <td>Use of Proprietary Markup
          <br />

          Use of Invalid Markup (such as is generated by some Microsoft 
		Office applications)
          <br />

          </td>

          <td>Use the W3 HTML and CSS Validator  
          <a href="/toolbox/">tools</a>
          to validate the web page. Correct any errors and replace
          proprietary code wherever possible.
	  <br />
          <a href="/toolbox/tools/2003/authoring/">Upgrade</a>

          web authoring tool to versions that support the W3
          standards and Netscape Gecko browsers<br /></td>
        </tr>

        <tr>
          <td>Content differs in Netscape Gecko browsers and
          Internet Explorer</td>

          <td>Incorrect Browser Sniffing
          <br />

          Use of Proprietary JavaScript
          <br />

	  <p>The JavaScript Console in Netscape 6.x and Netscape 7.x displays
          errors about document.all, document.layers,
          document.&lt;property&gt; not being defined.</p>
          </td>

          <td>Update 
          <a
          href="/viewsource/2002/browser-detection/">
          browser sniffing</a>

          to correctly detect Netscape Gecko browsers.
          <br />

          Upgrade APIs to use newer standards-conformant versions
          <br />

          <a href="/toolbox/tools/2003/authoring/">Upgrade</a>

          web authoring tool to versions that support the W3
          standards and Netscape Gecko browsers</td>
        </tr>

        <tr>
          <td>Content differs in Netscape Gecko browsers and
          Internet Explorer</td>

          <td>Your CSS relies on bugs in Internet Explorer's
          implementation of CSS. 
          <p>Internet Explorer incorrectly treats ID's and CLASS
          names as case insensitive while Netscape Gecko treats
          them correctly as case sensitive. Inconsistent case
          between the CSS defining the style for HTML ID's and
          CLASSes results in Netscape Gecko browsers not applying
          the styles to ID's or CLASS names that differ in
          case.</p>

          <p>Internet Explorer incorrectly specifies height and
          width of inline elements such as SPAN.</p>

          <p>Internet Explorer implements the box model (padding,
          margins, borders) incorrectly.</p>
          </td>

          <td>Do not use Internet Explorer's invalid implementation
          of CSS. Use only the cross-browser, standards conformant
          features of CSS. Use consistent case when writing HTML ID
          and CLASS name attributes and CSS Styles for those IDs
          and CLASSes. Do not specify heights or widths on inline
          elements such as SPANs. Use only cross-browser box
          specifications for margins, padding and borders. [
          <a href="/central/css/">more on CSS</a>

          ]</td>
        </tr>

        <tr>
          <td>Content differs in Netscape Gecko browsers and
          Internet Explorer</td>

          <td>Incorrect Layout mode specified by DOCTYPE
          <br />
          </td>

          <td>If pages should be displayed by legacy browsers such
          as Netscape Navigator 4 or Internet Explorer 4 and 5, be
          sure to specify Quirks mode layout via the DOCTYPE. [
          <a href="http://www.mozilla.org/docs/web-developer/quirks/doctypes.html">more info</a>

          ]</td>
        </tr>

        <tr>
          <td>Images are laid out without intervening blank areas
          in Interent Explorer but display blank areas between the
          images in Netscape Gecko browsers.</td>

          <td>Incorrect Layout mode specified by DOCTYPE</td>

          <td>Standards Mode Layout has been specified by the
          DOCTYPE. Change the DOCTYPE to request Quirks mode layout
          instead. [
          <a href="/viewsource/2002/img-table/">more info</a>

          ]</td>
        </tr>

        <tr>
          <td>Clicking a link results in a 404-Page not found but
          works in Internet Explorer</td>

          <td>The link may use an invalid form of a relative
          URL.</td>

          <td>Change relative URLS from http://directory/... to
          directory/.... or use absolute paths in URLS such as
          http://server/directory/... <br />
	  Verify that all hyperlinks use forward slashes (/)
	</td>
        </tr>

        <tr>
          <td>Clicking on a link displays a "download" or displays HTML code 
	  instead of rendering the page correctly, but works as
          expected in Internet Explorer</td>

          <td>The Web Server has incorrectly specified the MIME
          type for the content. Internet Explorer tries to guess
          the MIME type of documents while Netscape Gecko browsers
          relies upon the Web Server to specify the correct MIME
          type. Netscape Gecko does not try to 'sniff' the MIME
          type for a document in order to reduce the possibility of
          unsecure, dangerous content masquerading as as a safe
          MIME type.</td>

          <td>Use Perl's HEAD utitility to determine the actual
          MIME type being used by the Web Server. Correct any
          incorrect Server MIME types. [
          <a
          href="/viewsource/2002/incorrect-mime-types/">
          related article</a>

          ]</td>
        </tr>

        <tr>
          <td>Stylesheet is not being recognized</td>

          <td>The presence of the title attribute in a link element 
	  that references an external stylesheet can cause the stylesheet may be causing 
	  the external stylesheet to be ignored.
</td>

          <td>Make sure that any stylesheet which should always be applied is 
	  persistent instead of preferred. 
          [
          <a
          href="/viewsource/2002/preferred-stylesheets/">
          related article</a>

          ]</td>
        </tr>

        <tr>
          <td>Connecting to a secure site fails, but connects in
          Internet Explorer</td>

          <td>The Web Server does not properly implement the fall
          back negotiation for SSL.</td>

          <td>The Web Server administrator needs to upgrade the SSL
          software. In order to use a site with a defective
          implementation of SSL, visitors need to disable TLS in
          their Netscape 6/7 or Mozilla browser until the site has
          upgraded to software that correctly implements SSL.</td>
        </tr>

        <tr>
          <td>DHTML Menus implemented using HierMenu have problems.</td>

          <td>The HierMenu version is obsolete. The earliest
          version of HierMenu only supported Netscape Navigator 4.x
          and Internet Explorer 4.x and above. Later versions did
          support Netscape 6; however, in Netscape 6.1 and higher,
          support for Internet Explorer's proprietary offsetXXX
          properties results in HierMenu placing 
          <em>popups</em> in the wrong position. The most recent versions of 
          <a href="http://www.webreference.com/dhtml/hiermenus/">
          HierMenu</a> fully support all Netscape Gecko-based browsers.</td>

          <td>Upgrade to the most recent version of 
          <a href="http://www.webreference.com/dhtml/hiermenus/">
          HierMenu</a>.
	</td>
        </tr>
      </tbody>
    </table>

    <br />

    <br />
    <h2>
      Common Coding and Server Problems
    </h2>

    <p>This section details solutions to the most common 
    problems affecting standards-based browsers as well as issues that may specifically 
	affect Netscape Gecko browsers.</p>

    <h3>
      Proprietary HTML
    </h3>
          <b>Problem: Using Browser-Specific Proprietary HTML Markup (such
          as LAYERS).</b>

        <p>Since a browser is supposed to ignore HTML tags it does
        not recognize and render the content inside the tags, web
        page authors have used the technique of combining
        proprietary HTML that will work as expected in each
        browser.</p>

        <p>Netscape Gecko browsers will ignore both Internet
        Explorer and Netscape Navigator 4 proprietary HTML tags.
        So, a page may not display in Netscape Gecko browsers as it
        does in Internet Explorer 4 or in Netscape Navigator 4.</p>

        <p>The prime example of this is the use of Netscape
        Navigator 4 proprietary LAYER, commonly used in site
        navigation. For standards-based alternatives, see 
        <a
        href="/viewsource/2001/updating-dhtml-web-pages/">
        Updating DHTML Web Pages for Next Generation Browsers</a>.
	</p>

        <p>An HTML page can be quickly checked for the use of
        proprietary HTML Markup by submitting the page to the 
        <a href="http://validator.w3.org/">W3's HTML Validator</a>
        using the HTML 4.01 DOCTYPE. We will have more to say about
        DOCTYPEs later in this article, but essentially the DOCTYPE
        is supposed to indicate to a browser what version of HTML
        is used in the page.</p>

        <p>The 
        <a href="/library/xref/2001/html-element/"  
        target="_top">HTML Element Cross Reference</a>
        provides a list of all HTML Elements supported in Netscape
        4, Netscape Gecko browsers, Internet Explorer 4 and up and
        can be used to determine which HTML Elements are supported
        by all browsers.</p>
    <h3>
      Browser Detection
    </h3>
          <b>Problem: Faulty Browser Detection or Sniffing</b>

        <p>While browser detection is useful in enabling authors to code 
	pages that work only in specific browsers, improper
        browser detection can lead to major user experience
        breakages. 
        </p>

        <p>Many problems can occur when a web page uses browser
        detection to determine which proprietary features to use
        for a particular browser.</p>

        <p>Please see the 
        <a href="/viewsource/2002/browser-detection/">
        Browser Detection and Cross Browser Support</a> article 
        for a better approach to detecting browsers.</p>
    <h3>
      Browser-specific Workarounds
    </h3>
          <b>Problem: Code includes workarounds for bugs and browser-specific quirks.</b>

        <p>Since a Web page is judged not by how well it is written
        but by how well it displays in a browser, authors have
        developed many techniques which take advantage of
        idiosyncracies in particular browsers to achieve the
        desired effect. This is of particular importance since the
        early implementations of CSS found in Internet Explorer 4
        and Netscape Navigator 4 had many bugs. In order to achieve
        the desired effects on a page, authors wrote HTML and
        JavaScript which depended upon these bugs in order to work
        properly.</p>

        <p>This can cause problems in Netscape Gecko browsers since
        it implements the standards strictly. The old "code to the
	bugs" approach will not work for Netscape 6.x,  Netscape 7.x and other
        Mozilla based browsers.</p>

        <p>
          <b>Example - Putting forms in Tables</b>
        </p>

        <p>INVALID HTML to eliminate line break in FORM</p>

        <p>In older browsers, this results in the TD cell tightly
        wrapping around the input element.</p>

<pre>
&lt;table border="1"&gt;
&lt;tr&gt;
&lt;form name="form2"&gt;
&lt;td&gt;
&lt;input type="text"&gt;
&lt;/td&gt;
&lt;/form&gt;
&lt;/tr&gt;
&lt;table&gt;
</pre>

        <p>This approach is commonly used to get around the fact
        that FORM is a block level element in HTML and will
        naturally begin on a new line in the page. Unfortunately,
        this is invalid HTML and can cause problems both when
        parsing the page and when applying the CSS styles.</p>

        <p>
          <strong>Incorrect Use of XML Empty Tag notation</strong>
        </p>

        <p>Many authors have taken to using XML Empty tag notation (
        &lt;tag /&gt; ) in their HTML files. In XML, an Empty tag 
        NEVER has any content. The XHTML backward compatibility
        guidelines state that 
        <strong>Empty</strong>
        Elements can be coded by following the tag name with a
        space followed with as slash as in &lt;tag /&gt;. To be
        backwardly compatible you 
        <strong>must</strong>
        have a space before the trailing /&gt;. In addition, you
        must only use the XML Empty tag notation for HTML Elements
        that are always Empty - and not for HTML Elements that have
        optional ending tags.</p>

        <p>For example, it is ok to code &lt;br&gt; as &lt;br /&gt;
        although there is no benefit to do so in HTML documents.
        But it is NOT ok to code &lt;OPTION&gt; as &lt;OPTION /&gt;. To
        understand why, consider the following:</p>

        <table cellpadding="1" cellspacing="0" border="1">
          <thead>
            <tr>
              <th>HTML without optional ending tags</th>

              <th>Equivalent HTML with optional ending tags</th>
            </tr>
          </thead>

          <tbody>
            <tr>
              <td>&lt;select&gt;
              <br />

              &lt;option&gt;OptionValue
              <br />

              &lt;/select&gt;
              <br />
              </td>

              <td>&lt;select&gt;
              <br />

              &lt;option&gt;OptionValue&lt;/option&gt;
              <br />

              &lt;/select&gt;
              <br />
              </td>
            </tr>
          </tbody>
        </table>

        <p>Now consider if we used the XML Empty tag notation: the
        &lt;OPTION /&gt;</p>

        <table cellpadding="1" cellspacing="0" border="1">
          <thead>
            <tr>
              <th>HTML with XML Empty Tag notation</th>

              <th>Equivalent HTML with ending tags</th>
            </tr>
          </thead>

          <tbody>
            <tr>
              <td>&lt;select&gt;
              <br />

              &lt;option /&gt;OptionValue
              <br />

              &lt;/select&gt;
              <br />
              </td>

              <td>&lt;select&gt;
              <br />

              &lt;option&gt;&lt;/option&gt;OptionValue
              <br />

              &lt;/select&gt;
              <br />
              </td>
            </tr>
          </tbody>
        </table>

        <p>This is simply not correct. If you must use the XML
        Empty tag notation, then only do so for HTML Elements that 
        never have any content - NOT
        for HTML Elements that have optional ending tags.</p>

        <p>
          <b>CSS ID's should be case-sensitive</b>
        </p>

        <p>Netscape Gecko implements the case sensitivity of Class
        ID's correctly and will display this example correctly.
        However Internet Explorer treats all CSS ID's as
        case-insensitive and will not display this example
        correctly.</p>

<pre>
&lt;style type="text/css"&gt;
#id1 { text-decoration: line-through; }
#ID1 { text-decoration: underline; }
&lt;/style&gt;
&lt;div id="id1"&gt;
should be line-through
&lt;/div&gt;
&lt;div id="ID1"&gt;
should be underline
&lt;/div&gt;
</pre>

        <div id="id1">should be line-through</div>

        <div id="ID1">should be underline</div>

        <p>Note that the W3C's 
        <a href="http://validator.w3.org/">HTML Validator</a>
        will flag HTML ID attributes as duplicates if they only
        differ due to case. There appears to be some inconsistency
        between the actual HTML 4.01 Recommendation and the SGML
        declaration for HTML on whether ID attributes are case
        sensitive or not. This is unfortunate since the 
        <a href="http://validator.w3.org/">HTML Validator</a>
        is one of the primary vehicles web developers have for
        learning about the standards.</p>

        <p>Due to the common nature of this error, Netscape 6.2
        began treating CSS ID attributes as case-insensitive in 
        <strong>Quirks mode only</strong>. If you are invoking 
	Standards mode, you should still code
        your CSS to be consistent with respect to case. Please note
        that this document uses 
        <a href="#doctype">Quirks mode</a>.</p>

        <p>
          <b>CSS Class names should be case-sensitive</b>
        </p>

<pre>
&lt;style type="text/css"&gt;
.class1 { font-size: 1em; }
.CLASS1 { font-size: 2em; }
&lt;/style&gt;
&lt;div&gt;
&lt;div class="class1"&gt;
should be font-size: 1em;
&lt;/div&gt;
&lt;div class="CLASS1"&gt;
should be font-size: 2em;
&lt;/div&gt;
</pre>

        <div class="class1">should be font-size: 1em;</div>

        <div class="CLASS1">should be font-size: 2em;</div>

        <p>Netscape Gecko implements the case sensitivity of Class
        names correctly and will display this example correctly
        while Internet Explorer treats all CSS Classnames's as
        case-insensitive and will not display this example
        correctly.</p>

        <p>Due to the common nature of this error by web authors,
        Netscape 6.2 began treating CSS Class attributes as
        case-insensitive in 
        <strong>Quirks mode only</strong>. If you are invoking 
	Standards mode, you should still code
        your CSS to be consistent with respect to case. Please note
        that this document uses 
        <strong>Quirks mode</strong>.</p>

        <p>
          <b>Incorrect Relative URLs</b>
        </p>

        <p>A Relative URL is one which refers to the same web
        server where a web page is hosted. A Relative URL that
        refers to a path relative to the directory where a Web page
        is located looks like 
        <code>path/file.html</code>. Relative URLs that 
	refer to a path relative to the web
        server's root directory look like 
        <code>/path/file.html</code>.</p>

        <p>Older browsers supported the 
        invalid use of http://path/ for URLs relative to a web server's
        root directory but Netscape Gecko browsers do not. To
        correctly specify a web page relative to a web server's
        root directory, use URLs of the form 
        <code>/path/file.html</code>.</p>

        <p>
          <b>Invalid use of spaces in name Attributes (such as
          image maps)</b>
        </p>

        <p>Many authors seem to be infected by a penchant to use
        spaces in names. A 
        <a href="http://www.w3.org/TR/html401/types.html#h-6.2">
        name or id</a>
        attribute in HTML 4.01 may not legally contain spaces. This
        can cause problems with Gecko based browsers especially in
        image maps. You should make sure that your 
        <code>name</code> attributes are coded using valid 
	characters only.</p>
    <h3>
      Bad Code Due to Old APIS and Tools
    </h3>
          <b>Problem: Obsolete APIs or web authoring tools generate non-standard code.</b>

        <p>Many older versions of cross-browser APIs in common use
        around the web such as DYNAPI do not support Netscape Gecko
        for one or more of the reasons listed above. This is also
        the case for older versions of web authoring tools such as
        Macromedia's Dreamweaver 2 and 3.</p>

        <p>Newer versions of these APIs and tools do support
        Netscape Gecko however. For example, DYNAPI is now
        maintained at 
        <a href="http://dynapi.sourceforge.net/dynapi/">
        SourceForge</a> and offers a Netscape Gecko-compatible version. Newer
      versions of <a href="/toolbox/tools/2003/authoring/">
	web authoring tools</a> 
        support Netscape Gecko.</p>

    <h3>
      Wrong DOCTYPE 
    </h3>
         <b>Problem: An incorrect DOCTYPE can completely alter a page's presentation.</b>

    <p>Netscape Gecko, Internet Explorer for Mac OS and
    Internet Explorer 6 all use a technique called DOCTYPE sniffing
    to determine if a page is to be laid out in a fashion
    compatible with the older browsers or if it is to be laid out
    in a fashion compatible with the W3 standards.</p>

    <p>Using the appropriate DOCTYPE in an HTML document allows a
    web page author to continue to support the older, less
    compliant browsers while also supporting the newer, more
    compliant browsers by specifiying special Quirks mode layout
    via the DOCTYPE. As time progresses and the older browsers drop
    in market share, web page authors can transition to
    standards-based layout by using the appropriate DOCTYPE. [
    <a href="/viewsource/2001/validate/">related article</a>]</p>

    <p>While DOCTYPE sniffing is a useful means of continuing to
    support the older browsers, it can be a problem for newer
    browsers such as Netscape 6.x and Netscape 7.x if an inappropriate layout
    mode is specified.</p>

    <p>Netscape Gecko has two layout modes: Quirks and Standard.
    Quirks mode mimics the behavior of Netscape Navigator 4 while
    Standards mode follows the W3C Recommendations for HTML and
    CSS. In particular, Standards Layout Mode uses the CSS Box
    Model as defined in 
    <a href="http://www.w3.org/TR/REC-CSS2/visudet.html">Chapter
    10</a>
    of the CSS 2 Recommendation. The mode is picked based on the
    doctype declaration (or the lack thereof) at the beginning of
    an HTML document.</p>
<h3>
      Invalid Comments
</h3>
    <p>Netscape Gecko also has two parsing modes: Quirks and
    Standard. Quirks mode allows the use of invalid comments
    containing two dashes -- while Strict modes does not. </p>
    <br />

    &lt;!---- This is an invalid HTML Comment accepted in Quirks
    Comment Parsing ----&gt;
    <br />

    &lt;!-- This is a valid HTML Comment accepted in Stricts
    Comment Parsing --&gt;
    <br />
    

    <p>For the exact rules on which DOCTYPEs invoke Quirks vs
    Standards mode see 
    <a
    href="http://mozilla.org/docs/web-developer/quirks/doctypes.html">
    Mozilla's DOCTYPE sniffing</a> article.</p>

    <h2>
      Plugins Coding
    </h2>

    <p>You'll find for that some plugins behave differently in
    Netscape Gecko than in Netscape Navigator 4. Visit 
    <a href="/central/plugins/"
    title="Plugins Central">DevEdge Plugins Developer Central</a>
    to learn about scripting Netscape Gecko browsers, proper use of
	tags, changes in the plugin architecture vs.
    the Netscape 4 generation, and suggested plugin strategies.</p>

    <h3>
      Web Server Config Problems
    </h3>

    <ul>
      <li>
        Incorrectly specified MIME types

        <p>Many Web servers have incorrectly specified MIME types
        for files. Netscape Gecko browsers require that the server 
	specifies the correct MIME type to match the content type:</p>

        <p>
          <ul>
            <li>HTML - text/html</li>

            <li>CSS - text/css [
            <a
            href="/viewsource/2002/incorrect-mime-types/">
            related article</a>

            ]</li>

            <li>XML - text/xml</li>
          </ul>
        </p>
      </li>

      <li>
        Faulty implementations of HTTP

        <p>Several Web Servers incorrectly implement the HTTP
        protocol which can result in problems for Netscape 6.</p>
      </li>

      <li>
        Faulty implementations of SSL

        <p>Older browser such as Internet Explorer 4 and Netscape
        Navigator 4 implemented older versions of the Secure
        Sockets Layer (SSL) protocol. The most common version of
        SSL on the web today is SSL 3.0, however the newest version
        TLS ( SSL 3.1 ), which is supported by Netscape Gecko
        browsers is not supported by many Web Servers today.
        Unfortunately, several implementations of SSL 3.0
        incorrectly implement the negotiation of which version of
        SSL to use and fail to connect to Netscape Gecko
        browsers.</p>

        <p>For more detail on this issue, please read 
        <a href="/viewsource/2001/tls-ssl3/">Notes on
        TLS/SSL 3.0 Intolerant Servers</a>.</p>
      </li>
    </ul>



    <h2>
      Useful Resources
    </h2>

    <ul>
      <li>Beginning to intermediate Web Authors can look to the 
      <a href="/toolbox/tools/">DevEdge Web Tune Up
      Wizard</a>

      for pointers on areas where content needs to be updated to
      support Netscape Gecko and other browsers that support the
      W3C standards.</li>

      <li>
      <a
      href="http://webmaster.info.aol.com">
      AOL Webmaster.info Site - Developing for Netscape Gecko</a>

      covers common issues facing webmasters, and how to update
      your code.</li>
    

    <li>The <a href="/toolbox/">DevEdge Toolbox</a> aggregates 
	several invaluable W3C tools for 
	diagnosing web page problems as well as validators, code samples, 
	and more.</li>
      <li>
        <a
        href="http://bugzilla.mozilla.org/enter_bug.cgi?format=guided"
         >Report Mozilla/Netscape browser or web site compatibility problems</a>
      </li>

      <li>
        <a href="/community/">DevEdge
        Community</a>
      </li>
    </ul>

    <h2>
      References
    </h2>

    <ul>
       <li>
        <a
        href="http://www.mozilla.org/docs/web-developer/upgrade_2.html"
         target="_top">Using Web Standards in Your Web Pages</a>
      </li>

      <li>
        <a href="/viewsource/2002/browser-detection/"
        >Browser Detection and Cross Browser Support</a>
      </li>

      <li>
        <a
        href="/viewsource/2001/updating-dhtml-web-pages/"
        >Updating DHTML Web Pages</a>
      </li>

      <li>
        <a href="/library/xref/2001/html-element/"
        >HTMLElement Cross Reference</a>
      </li>

      <li>
        <a href="/library/xref/2002/client-data/">
         Client Object Cross Reference</a>
      </li>

      <li>
        <a
        href="http://www.mozilla.org/docs/web-developer/xbdhtml/xbdhtml.html">
	Introduction to Cross-Browser JavaScript and
        Dynamic HTML</a>
      </li>
      <li>
        <a
        href="/central/">
	DevEdge Tech Central</a> links to many more resources.
      </li>
    </ul>
  </nde:content>
<nde:related area="nde">
    <nde:item url="/central/gecko/" title="Netscape Gecko browser information">Netscape Gecko Central</nde:item>
    <nde:item url="/central/gecko/2002/download/" title="Netscape Gecko browser downloads">Browser Downloads</nde:item>
    <nde:item url="/viewsource/2002/browser-detection/" title="Browser Detection and Cross Browser Support">Browser Detection</nde:item>
    <nde:item url="/viewsource/2002/gecko-useragent-strings/" title="Netscape Gecko user agent strings">User Agent Strings</nde:item>
    <nde:item url="/toolbox/tools/" title="Developer tools and code samples">Developer Tools</nde:item>
    <nde:item url="/central/" title="Learn about CSS, HTML, DOM and more">DevEdge Tech Centrals</nde:item>
    <nde:item url="/community/" title="Find more information or post questions on newsgroups">DevEdge Community</nde:item>
  </nde:related>
<nde:related area="ext">
  <nde:item url="http://www.mozilla.org/docs/web-developer/upgrade_2.html" title="Learn about standards">
	Using Web Standards in Your Web Pages</nde:item>
  <nde:item url="http://www.mozilla.org/docs/web-developer/xbdhtml/xbdhtml.html" 
	title="Learn about cross-browser JS and DHTML">Introduction to Cross-Browser JavaScript and Dynamic HTML</nde:item>
  <nde:item url="http://mozilla.org/docs/web-developer/quirks/doctypes.html" title="Mozilla's DOCTYPE sniffing">
    Mozilla's DOCTYPE sniffing</nde:item>
  <nde:item url="http://webmaster.aol.com" title="General AOL technical information">AOL's Webmaster.info</nde:item>
</nde:related>
</nde:article>
