[Zope] Browser Detection

Phil Harris phil.harris@zope.co.uk
Thu, 16 Mar 2000 21:46:59 -0000


Tom,

Try this (only slightly tested)

<dtml-call "REQUEST.set('ua',HTTP_USER_AGENT)">

<dtml-if "_.string.find(ua,'MSIE') != -1">
 <dtml-comment>
  Its MSIE
 </dtml-comment>
 <dtml-call "REQUEST.set('bMSIE',1)">
 <dtml-if "_.string.find(ua,'MSIE 3.0') != -1">
  <dtml-call "REQUEST.set('bMSIE3',1)">
 </dtml-if>
 <dtml-call "REQUEST.set('iMSIE4',_.string.find(ua,'MSIE 4.0'))">
 <dtml-if "iMSIE4 == -1">
  <dtml-call "REQUEST.set('iMSIE4',_.None)">
 </dtml-if>
 <dtml-if iMSIE4>
  <dtml-call "REQUEST.set('bMSIE4',1)">
 </dtml-if>
 <dtml-if bMSIE4>
  <dtml-call "REQUEST.set('minorVer',ua[iMSIE4+8])">
  <dtml-if bMSIE4>
   <dtml-if "minorVer == 'p' or minorVer == 'b'">
    <dtml-call "REQUEST.set('bMSIE4_beta',1)">
   </dtml-if>
   <dtml-if "minorVer == '1'">
    <dtml-call "REQUEST.set('bMSIE4_01',1)">
   </dtml-if>
  </dtml-if>
 </dtml-if>
 <dtml-if "_.string.find(ua,'MSIE 5') != -1">
  <dtml-call "REQUEST.set('bMSIE5',1)">
 </dtml-if>
<dtml-else>
 <dtml-comment>
  Let's assume netscape
 </dtml-comment>
 <dtml-call "REQUEST.set('bNetscape',1)">
 <dtml-if "ua[8] >= '4'">
  <dtml-call "REQUEST.set('bNetscape_4',1)">
 <dtml-elif "ua[8] >= '3'">
  <dtml-call "REQUEST.set('bNetscape_3',1)">
 <dtml-else>
  <dtml-call "REQUEST.set('bNetscape_2',1)">
 </dtml-if>
</dtml-if>


Include this in your standard_html_header and then use the variables in your
pages as normal,so:

<dtml-if bNetscape_4>
  do netscape specific stuff
<dtml-elif bMSIE4_01>
  do IE specific stuff
</dtml-if>

HTH

Phil
phil.harris@zope.co.uk

----- Original Message -----
From: "Tom Scheidt" <tom@falsemirror.com>
To: <zope@zope.org>
Sent: 16 March 2000 18:36
Subject: [Zope] Browser Detection


> Is there a way to write a <dtml-if> for browser detection, like:
>
> <dtml-if (User Agent is Netscape 4.5)>
> Use this
> <dtml-elif (User Agent is Internet Explorer 5.0)>
> Use this
> </dtml-if>
>
> Thanks in advance.
>
> *************************
> Tom Scheidt
> www.falsemirror.com
> tom@falsemirror.com
> *************************
>
>
> _______________________________________________
> Zope maillist  -  Zope@zope.org
> http://lists.zope.org/mailman/listinfo/zope
> **   No cross posts or HTML encoding!  **
> (Related lists -
>  http://lists.zope.org/mailman/listinfo/zope-announce
>  http://lists.zope.org/mailman/listinfo/zope-dev )