Identifiera Safari med javascript

Tråden skapades och har fått 6 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Stockholm
  • 2003-09-10 01:21

Hej!

Behöver hjälp ett script som skickar alla browsers utom NS 7.0 - 7.02 till en URL, och de ovan specade till en annan URL. Kör DW MX, men problemet är att "ringa in" just dessa (och ingen annan) browsers. Får inte till det med något script jag använt tidigare. All hjälp mottages tacksamt.

ödmjukast

har inte användt browsersniffing på flera år, tycker ärlig talat att det inte behövs, får man fråga varför du vill göra det?

iaf så är user agent stringen på safari skickar:

Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/xx (KHTML, like Gecko) Safari/xx

där xx är versionsnumret (fn. 85)

  • Medlem
  • Stockholm
  • 2003-09-10 11:35

Tack Johan.

Jo, problemet är att just NS 7-7.02 placerar popupfönster bakom istället för framför fönstret. Så är inte fallet med varken tidigare eller senare versioner av NS. Problemet är att sniffning och identifikation av dessa NS-versioner alltid verkar innefatta även Safari… Det är det jag försöker komma runt.

Jag hittade den här TechNoten själv oxå, men det jag testat hittills skickar även Safari till den alternativa URL:en, eftersom Safari enligt Apple
"since the rendering engine used by Safari behaves most like Netscape, the Safari JavaScript engine will report navigator.appName as "Netscape"." Och det vill jag inte.

Det handlar f ö helt enkelt om en Flashfilm som skall öppnas i ett nytt fönster utan adressrad, knappar, scrollbars och dylikt.

sätt en timeout på en hundra millisekunder som sen fokuserar fönstret.

pseudo kod:

windown.open( 'winName', 100, 100 );
setTimeout( '100', winName.focus() );

borde inte det funka?

kan dock bara erindra mig att gamla ie5/pc hadde det problemet (att popuppar tappade fokus), har aldrig uplevt det med gecko baserade browsers

  • Medlem
  • Stockholm
  • 2003-09-10 17:43

Tack Johan!

Testade detta, och det verkar funka vid första anblicken. Skall testa lite mer, även med cacheade versioner på servern och återkommer med resultatet!

Varför kom jag inte på det där själv, det är ju genialiskt…;)

  • Medlem
  • Stockholm
  • 2003-09-10 18:38

Kanon!

Det funkar.

Då slipper jag ju ge mig in i det här och rota, vilket f ö känns rätt skönt...:

<script>

var exclude=1;
var agt=navigator.userAgent.toLowerCase();
var win=0;var mac=0;var lin=1;
if(agt.indexOf('win')!=-1){win=1;lin=0;}
if(agt.indexOf('mac')!=-1){mac=1;lin=0;}
var lnx=0;if(lin){lnx=1;}
var ice=0;
var ie=0;var ie4=0;var ie5=0;var ie6=0;var com=0;var dcm;
var op5=0;var op6=0;var op7=0;
var ns4=0;var ns6=0;var ns7=0;var mz7=0;var kde=0;var saf=0;
if(typeof navigator.vendor!="undefined" && navigator.vendor=="KDE"){
	var thisKDE=agt;
	var splitKDE=thisKDE.split("konqueror/");
	var aKDE=splitKDE[1].split("; ");
	var KDEn=parseFloat(aKDE[0]);
	if(KDEn>=2.2){
		kde=1;
		ns6=1;
		exclude=0;
		}
	}
else if(agt.indexOf('webtv')!=-1){exclude=1;}
else if(typeof window.opera!="undefined"){
	exclude=0;
	if(agt.indexOf("opera/5")!=-1||agt.indexOf("opera 5")!=-1){op5=1;}
	if(agt.indexOf("opera/6")!=-1||agt.indexOf("opera 6")!=-1){op6=1;}
	if(agt.indexOf("opera/7")!=-1||agt.indexOf("opera 7")!=-1){op7=1;}
	}
else if(typeof document.all!="undefined"&&!kde){
	exclude=0;
	ie=1;
	if(typeof document.getElementById!="undefined"){
		ie5=1;
		if(agt.indexOf("msie 6")!=-1){
			ie6=1;
			dcm=document.compatMode;
			if(dcm!="BackCompat"){com=1;}
			}
		}
	else{ie4=1;}
	}
else if(typeof document.getElementById!="undefined"){
	exclude=0;
	if(agt.indexOf("netscape/6")!=-1||agt.indexOf("netscape6")!=-1){ns6=1;}
	else if(agt.indexOf("netscape/7")!=-1||agt.indexOf("netscape7")!=-1){ns6=1;ns7=1;}
	else if(agt.indexOf("gecko")!=-1){ns6=1;mz7=1;}
	if(agt.indexOf("safari")!=-1 || (typeof document.childNodes!="undefined" && typeof document.all=="undefined" && typeof navigator.taintEnabled=="undefined")){mz7=0;ns6=1;saf=1;}
	}
else if((agt.indexOf('mozilla')!=-1)&&(parseInt(navigator.appVersion)>=4)){
	exclude=0;
	ns4=1;
	if(typeof navigator.mimeTypes['*']=="undefined"){
		exclude=1;
		ns4=0;
		}
	}
if(agt.indexOf('escape')!=-1){exclude=1;ns4=0;}
if(typeof navigator.__ice_version!="undefined"){exclude=1;ie4=0;}

</script>

1
Bevaka tråden