Simple browser detect

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Szar

    Simple browser detect

    JS noob. I've seen plenty of browser detection scripts but they all seem to
    be slightly different and don't really fit my needs. I have various places
    where if the browser is IE I'd like to display [this html code] else
    [display this]. For example, if a browser is IE I want to use this CSS file
    otherwise use a different one and if it's IE make this cell x pixels high
    else make it y pixels high. I'm sure this is easy, please excuse my
    stupidity.
    Steve.


  • Jerry Park

    #2
    Re: Simple browser detect

    Szar wrote:[color=blue]
    > JS noob. I've seen plenty of browser detection scripts but they all seem to
    > be slightly different and don't really fit my needs. I have various places
    > where if the browser is IE I'd like to display [this html code] else
    > [display this]. For example, if a browser is IE I want to use this CSS file
    > otherwise use a different one and if it's IE make this cell x pixels high
    > else make it y pixels high. I'm sure this is easy, please excuse my
    > stupidity.
    > Steve.
    >
    >[/color]
    Browser detection scripts are generally a bad idea. There are multiple
    browsers and multiple versions of those browsers running. Many browsers
    lie, and many can be set to say they are anything their user wants them
    to say. Your detection script, no matter how good, cannot reliably
    determine what the browser is.

    Almost without exception, when a site fails to operate properly in my
    browser, I find that it is because of a browser detection script and
    javascript which fails to serve the page because either the site
    designer doesn't want to support my browser and deliberately excludes
    it, or because the site designer thinks erroneously that my browser
    can't render the page, or because the site designer has erroneously
    identified my browser as some other browser or browser version.

    It is far better to write to standards. When you write to standards and
    a page doesn't display properly, the client knows that it is the fault
    of his browser -- not because of your code.

    Comment

    • Lasse Reichstein Nielsen

      #3
      Re: Simple browser detect

      Jerry Park <NoReply@No.Spa m> writes:
      [color=blue]
      > Szar wrote:[color=green]
      >> JS noob. I've seen plenty of browser detection scripts but they all seem to
      >> be slightly different and don't really fit my needs. I have various places
      >> where if the browser is IE I'd like to display [this html code] else
      >> [display this]. For example, if a browser is IE I want to use this CSS file
      >> otherwise use a different one and if it's IE make this cell x pixels high
      >> else make it y pixels high. I'm sure this is easy, please excuse my
      >> stupidity.
      >> Steve.
      >>[/color]
      > Browser detection scripts are generally a bad idea. There are multiple
      > browsers and multiple versions of those browsers running. Many
      > browsers lie, and many can be set to say they are anything their user
      > wants them to say. Your detection script, no matter how good, cannot
      > reliably determine what the browser is.
      >
      > Almost without exception, when a site fails to operate properly in my
      > browser, I find that it is because of a browser detection script and
      > javascript which fails to serve the page because either the site
      > designer doesn't want to support my browser and deliberately excludes
      > it, or because the site designer thinks erroneously that my browser
      > can't render the page, or because the site designer has erroneously
      > identified my browser as some other browser or browser version.
      >
      > It is far better to write to standards. When you write to standards
      > and a page doesn't display properly, the client knows that it is the
      > fault of his browser -- not because of your code.[/color]

      You overestimate the common user of IE, the type that think the
      "e"-icon opens "the internet". He never heard of other browsers, an
      all that matters is that the page works for him.

      Otherwise I agree: Write to standards, but allow for a few fall-backs
      if the browser doesn't support standards well enough (like IE and CSS2).

      The best way to make a fallback, is to use object detection, not
      browser detection. That is, instead of:
      ---
      if (browseDetect() == "IE") {
      var elem = document.all['foo'];
      } else {
      var elem = document.getEle mentById("foo") ;
      }
      ---
      you do:
      ---
      if (document.getEl ementById) {
      var elem = document.getEle mentById("foo") ;
      } else if (document.all) {
      var elem = document.all['foo'];
      } else {
      // handle error
      }
      ---
      Points to notice: Default is the standard method, getElementById. Even
      if some new browsers understands document.all, they will use the standard
      method first. It is safer that way.
      There are browsers other than IE that support document.all, and browsers
      that claim to be IE that doesn't support it. Testing for the object you
      need directly avoids pitfalls like these.
      Be ready to handle the complete failur, just as you are prepared for
      Javascript to be completely unavailable.


      The safest way to make a specific fallback for IE is to use the
      IE-proprietary conditional comments:
      <!--[if IE]>
      .... all this is only seen by IE, all other browsers think it is
      a normal HTML comment
      <![end if]-->
      However, these only work in IE 5+, and maybe the bug will be fixed in
      IE 7, so you should include the version of IE:
      <!--[if IE 6]> ... only IE 6 and lower ...

      /L
      --
      Lasse Reichstein Nielsen - lrn@hotpop.com
      DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleD OM.html>
      'Faith without judgement merely degrades the spirit divine.'

      Comment

      • Jerry Park

        #4
        Re: Simple browser detect

        Lasse Reichstein Nielsen wrote:[color=blue]
        > Jerry Park <NoReply@No.Spa m> writes:
        >
        >[color=green]
        >>Szar wrote:
        >>[color=darkred]
        >>>JS noob. I've seen plenty of browser detection scripts but they all seem to
        >>>be slightly different and don't really fit my needs. I have various places
        >>>where if the browser is IE I'd like to display [this html code] else
        >>>[display this]. For example, if a browser is IE I want to use this CSS file
        >>>otherwise use a different one and if it's IE make this cell x pixels high
        >>>else make it y pixels high. I'm sure this is easy, please excuse my
        >>>stupidity.
        >>>Steve.
        >>>[/color]
        >>
        >>Browser detection scripts are generally a bad idea. There are multiple
        >>browsers and multiple versions of those browsers running. Many
        >>browsers lie, and many can be set to say they are anything their user
        >>wants them to say. Your detection script, no matter how good, cannot
        >>reliably determine what the browser is.
        >>
        >>Almost without exception, when a site fails to operate properly in my
        >>browser, I find that it is because of a browser detection script and
        >>javascript which fails to serve the page because either the site
        >>designer doesn't want to support my browser and deliberately excludes
        >>it, or because the site designer thinks erroneously that my browser
        >>can't render the page, or because the site designer has erroneously
        >>identified my browser as some other browser or browser version.
        >>
        >>It is far better to write to standards. When you write to standards
        >>and a page doesn't display properly, the client knows that it is the
        >>fault of his browser -- not because of your code.[/color]
        >
        >
        > You overestimate the common user of IE, the type that think the
        > "e"-icon opens "the internet". He never heard of other browsers, an
        > all that matters is that the page works for him.
        >
        > Otherwise I agree: Write to standards, but allow for a few fall-backs
        > if the browser doesn't support standards well enough (like IE and CSS2).
        >
        > The best way to make a fallback, is to use object detection, not
        > browser detection. That is, instead of:
        > ---
        > if (browseDetect() == "IE") {
        > var elem = document.all['foo'];
        > } else {
        > var elem = document.getEle mentById("foo") ;
        > }
        > ---
        > you do:
        > ---
        > if (document.getEl ementById) {
        > var elem = document.getEle mentById("foo") ;
        > } else if (document.all) {
        > var elem = document.all['foo'];
        > } else {
        > // handle error
        > }
        > ---
        > Points to notice: Default is the standard method, getElementById. Even
        > if some new browsers understands document.all, they will use the standard
        > method first. It is safer that way.
        > There are browsers other than IE that support document.all, and browsers
        > that claim to be IE that doesn't support it. Testing for the object you
        > need directly avoids pitfalls like these.
        > Be ready to handle the complete failur, just as you are prepared for
        > Javascript to be completely unavailable.
        >
        >
        > The safest way to make a specific fallback for IE is to use the
        > IE-proprietary conditional comments:
        > <!--[if IE]>
        > .... all this is only seen by IE, all other browsers think it is
        > a normal HTML comment
        > <![end if]-->
        > However, these only work in IE 5+, and maybe the bug will be fixed in
        > IE 7, so you should include the version of IE:
        > <!--[if IE 6]> ... only IE 6 and lower ...
        >
        > /L[/color]
        I agree. My website is XHTML1.0 compliant. I had to write some css
        specifically to make IE center a division properly. Fortunately, you can
        sometimes correct browser errors without messing up the compliant
        browsers. However, if I must choose between standards compliant code or
        non-compliant code (just to allow a non-compliant browser to display the
        page), I'll choose compliant code, for no other reason than that people
        should be encouraged to write to the standards.

        The code many people write, where there are 47 versions of a page for
        multiple browsers, is a nightmare. I can't imagine why anyone would want
        to do that.

        Comment

        • cwdjr

          #5
          Re: Simple browser detect

          Please see the page at
          http://www.wtv-zone.com/cwdjrsxyz/br...fer_tests.html .Here I
          have given fairly detailed browser sniffing results for 6 browsers. At
          the bottom of the page are a few comments that may
          help.__________ _______________ _______________ __
          60000 Year Perpetual Calendar. Official US Holidays are detected and
          colored. Try to put in bad data. Validation sinks to a new low. The
          calendar is at http://www.wtv-zone.com/cwdjrsxyz/ca...calendar3.html
          ..Some of the details are given at the page

          .._____________ ____________

          Comment

          • Thomas 'PointedEars' Lahn

            #6
            Re: Simple browser detect

            Szar wrote:
            [color=blue]
            > JS noob. I've seen plenty of browser detection scripts but they all seem to
            > be slightly different and don't really fit my needs.[/color]

            You do not need and you do not want such "detection" scripts:




            PointedEars

            Comment

            • Szar

              #7
              Re: Simple browser detect


              "Szar" <zarwell@hotmai l.com> wrote in message
              news:KGFsb.260$ Lv3.84@newssvr2 3.news.prodigy. com...[color=blue]
              > JS noob. I've seen plenty of browser detection scripts but they all seem[/color]
              to[color=blue]
              > be slightly different and don't really fit my needs. I have various places
              > where if the browser is IE I'd like to display [this html code] else
              > [display this]. For example, if a browser is IE I want to use this CSS[/color]
              file[color=blue]
              > otherwise use a different one and if it's IE make this cell x pixels high
              > else make it y pixels high. I'm sure this is easy, please excuse my
              > stupidity.
              > Steve.
              >
              >[/color]

              In the time it took everyone to write their opinions on why i should not use
              brwoser detection couldn't they have just answered my question??? This is
              for a page that only myself and one other person will be accessing and I
              frankly don't care if it doesn't look good on 100% off all browsers out
              there. I care about current IE and Mozilla versions, that's all. The
              difference with how IE and others view page margins and a few other things
              are throwing off how i'd like images on the page to line up with the
              background image. If you want to answer a post then maybe give a little side
              note, fine. Otherwise save it.


              Comment

              • Thomas 'PointedEars' Lahn

                #8
                Re: Simple browser detect

                Szar wrote:
                [color=blue]
                > In the time it took everyone to write their opinions on why i should not use
                > brwoser detection couldn't they have just answered my question???[/color]

                Your `?' key is b0rken.

                They/I could have just answered your question, but this is a discussion
                group, no a (paid) support forum. All you get is advice, BTW for free.


                PointedEars

                Comment

                Working...