Avatar billede gurly Praktikant
23. august 2009 - 15:12 Der er 8 kommentarer og
1 løsning

Hvordan detecter man firefox brugere med IE Tab

Jeg har en htm side som bruger diverse objecter som kun fungere under windows / Internet Explorer.

Derfor bruger jeg javascript til at tjekke om brugeren bruger Internet Explorer, og hvis ikke, så viderestilles bruger til en fejlside.

Men problemt er hvis brugeren bruger Firefox med tilføjelses programmet "IE Tab"
Så smutter brugeren forbi Browser Tjekket, og kommer ind på siden, og så virker tingene slet ikke, og det er et problem.

Især fordi jeg ikke kan få detectet brugeren, så jeg ikke kan få forklaret brugeren hvordan han får det til at virke.

Så hvordan få jeg detectet om der anvendes Explorer eller IE Tab ?

Da jeg vil tro det bliver en hård nød at knække, hvis det overhovedet kan lade sig gøre, så sættter jeg max point på.
Avatar billede olebole Juniormester
23. august 2009 - 17:01 #1
<ole>

var uA = navigator.userAgent.toLowerCase();
if (uA.indexOf("msie")>-1 && uA.indexOf("opera")<0) {
  // Er en IE
}

/mvh
</bole>
Avatar billede olebole Juniormester
23. august 2009 - 18:57 #2
PS:
Du kan også bruge Conditional Comments:
    http://msdn.microsoft.com/en-us/library/ms537512(VS.85).aspx

<![if !IE]>
<script type="text/javascript">
location.href = "nonIE.html";
</script>
<![endif]>
Avatar billede gurly Praktikant
23. august 2009 - 19:58 #3
Hej Olebole

Begge dine æøsninger virker tilsyneladende ikke.

Øverste løsning validere godt nok kun ved brug af IE

Og nedderst løsning viderestiller ganske rigting alle uden IE

Men problemet er at programmet IE Tab det bruger randerings motoren fra Explorer til at åbne en side i Firefox, og derfor er det jo reelt randerings motoren fra explorer som køre javascripten. og derfor validere det som værende explorer.

Du kan hente IE Tab her > https://addons.mozilla.org/da/firefox/addon/1419

Når du har installeret det så kan du i nedderste hjørne vælge IE som randerings motor, og så prøv at åbne et par sider med de script du anbefalede, så vil du se de validere som værende IE

I bund og grund er det jo også explorer der køre inden i Firefox, men det virker bestemt ikke optimalt med min side, derfor ville jeg gerne viderestille dem til en side der beskriver at de må bruge Explorer, jeg ved de har den, for alt andet end windows brugere er allerede sorteret fra c",)

Det var derfor jeg satte 200 Point til den  c",)
Avatar billede olebole Juniormester
23. august 2009 - 20:20 #4
Så har jeg ikke noget bud - og jeg jeg har ikke lyst til at installere noget  =)
Avatar billede gurly Praktikant
23. august 2009 - 20:47 #5
Det er også ok, jeg ved godt at det er>
PCMan (Hong Jen Yee), yuoo2k
Og at applikationen ikke er bekræftiget.
Det er dog mozilla selv der linker til den,
de fraskriver sig dog også ansvaret, klager må sendes til udgiveren.

Jeg tror dog nok det er et ret anvendt program, fordi det giver mulighed for at activ-x objekter og ligende som normalt kun køre i Explorer, de kan køre i firefox ie tab, fordi den bruger randering fra explorer.

Jeg takker for hjælpen Olebole, også selv om du ikke lige havde et svar denne gang  c",)

Måske andre har en løsning ?
Avatar billede olebole Juniormester
23. august 2009 - 21:09 #6
Selvtak. Udfra mit kendskab til brugen af Explorer som en control i en alm. Windows applikation, skrevet i Visual Studio, tvivler jeg på, du kan hente info om hosten - men jeg tør ikke afvise det 112%. Lad tråden stå åben og se, om der kommer anden respons  =)
Avatar billede gurly Praktikant
23. august 2009 - 23:08 #7
Jeg tror nok jeg har fundet en svaghed i den som gør at den ikke opføre sig som en rigtig eksplorer ville gøre, og at jeg nok kan "fange den" i det og få den sorteret fra, samtidig kan jeg måske få løst et andet problem, der består i hvis folk med explorer 7 eller 8 de har været i >
internet indstillinger / genneralt / faner / indstillinger
og så sat krys i "Åben altid popup vinduer i en ny fane"
så kan man ikke få åbnet et popup vindue i bestemt størrelse,
siden åbner i stedet i en fane i samme side som forsiden.
(det er der nok mange webmastere der glemmer)

Det duer ikke hvis man på forsiden har et link til en side der skulle i 800 x 570 linier (og indholdet ytilpasses til dette)
explorer innorere så bare alle kommandoer om resize og åbner i fuld størrelse.
og hvis siden så har en special funktion der resizer størrelsen på selve vinduet + resize af iframe i vinduet og resize af en applikation på siden. så virker dette naturligvis ikke.

Jeg tror dig jeg har en løsning på det hele,også på at få fanget IE Tab på en særhed, som gør den ikke opføre sig som explorer, og som nok kan udnyttes til at sortere den fra.

Det bliver noget i retning af >

Min side fylder 800 x 570 linier, det maksimale for 800 x 570 skærm, da windows menu fylder omkring 30 pixel.
(vinduet har ingen scrollbar)

Der detectes for Explorer, alle andre viderestilles til
"Non-IE.htm" (fordi det her jeg brug for, in this case)

Der detectes for minimum 800 x 600 linier skærm opløsning,
brugere der ikke har det, viderestiles til side der beskriver hvordan de kan bruge den Zoom funktion der er i Explorer 8,
Den kan nemlig zoome siden ned til 75 eller 50 %
hvorved man kan åbne siden med ned til 400 x 300 linier,
I modsætning til Explorer 7 som kun resizer den side man er på, så gør den i Explorer 8 det at den også automatisk resizer nye vinduer der åbnes, så hvis man på forsiden har indstillet 50 % zoom, og så man åbner et popup vindue,på 800 x 570 linier,
så bliver vinduet kun 400 x 285 linier, samtidig skalere den indholdet så det også kun bliver 50 %
Den har bare den Bug, at den skalere indholdet af siden en smule mindre end den skalere vinduet, så indholdet kan ikke helt være der, vinduet bliver for lille til indholdet (ingen scrollbar)
Løsningen kommer >

Med javascript sættes siden til omkring 200 x 200 linier,
straks efter sendes ny kommando om resize til 100 x 100 linier

Der testes nu på browser width
(her tages hensyn til at browser width er lidt mindre end vinduet)

Hvis test viser at der er maksimalt 100 x 100 maksimalt linier, så er den god nok, siden supportere resize og er derfor åbnet i popup vindue
(og ikke i en fane som ikke kan resizes)
der resizez så til på tænkt færdig size 800x570 indhold loades.

hvis man kan detekte højere browser width end 200, så tyder det på siden er åbnet i et faneblad, i stedet for et popup vindue,
det kan så være eksplorer eller Firefox med IE Tab

Hvis det er explorer i en fane, så innorere den alle resize, derfor kan man prøve at detecte om browser width er større end de 400 den burde være strandet ved, hvis den er det, så kan man vælge at sætte indholdet til fuld størrelse, eller viderestille til side med besked om hvordan man åbner i nyt vindue

Firefox og IE Tab, dem har vi stadig hængende, for den åbner i fane og den har sat et IE vindue på de 200 x 200 linier vi startede med, den supportere ikke resize, heller ikke selv om firefox indstilles til altid at åbne i nyt vindue, IE Tab køre sine ejne indstillinger, og alle sider åbnes i en fane.

Det sjove er så at tjekker man så browser width, så får man kun de 200 linier, som ligger i randerings motoren af explorer,
også selv om firefox vinduet er meget større.
Og dette adskiller den jo væsentligt fra rigtig Explorer der også er i en fane, der vil browser width være være bredere.
(jeg ved jo fra første tjek vi er over 800 x 570)
Der kan så viderestilles til "IE Tab ikke understyttet"
(in this case ved jeg jo folk har IE da de har windows)

Når så siden er sat til de defaulte 800 x 570,
så kan man lige køre en sidste detect på browser width,
så tjekker man om browser width er mindre end 787
( normal er der nemlig 790 ) (de sidste 10 til kanter af vindue)

Hvis ikke der er det, så er det nok besøg at Explorer 8, hvor folk under besøg på forside har brugt resizen i eksplorer, og valgt zom 75 eller 50 %
selv om den skalere både vindue og indhold ned til 400 x 285
så kan man ved browser width detecte 784 linier
(hvor den burde være 790)
grundet en Bug så laves vinduet lidt mindre end indholdet.
så siger du måske hvad kan 6 linier da gøre ?
men selv om browser testen kun siger 6 linier, så i praksis er vinduet blevet noget mindre i bredde end indhold,
så hvis jeg kun kan detecte de 784 så resizer jeg siden en gang til til 900 x 570 linier, så kan det lige være der ved en 50% zoom, så det er op imod 10% den zoomer vinduet mindre end indhold

Det skyldes et ønske fra brugere et sted med meget små skærme om at kunne bruge min side med meget små opløsninger.

Så selv om du nok har ret i at man ikke kan detecte på "hosten"
så tror jeg alligevel jeg kan udpege IE Tab  c",)

Det hele her er dog kun afprøvet i brudstykker, jeg skal have afprøvet det samlet, og se hvor godt det virker.

Jeg vil håbe at nogen kan bruge sludderen til noget, specielt det med at popup stopperen i explorer er ikke det eneste man skal huske at tage hensyn til når man laver popup vinduer i bestemte størelser, mange tænker ikke over de faneblads indstillinger deaktive popup vinduer så de åbner i faneblad.

Jeg supportere kun eksplorer,
til gengæld forsøger jeg at supportere det fuldt ud c",)

Gad vide om der er nogen der når helt her ned c",)
så står spørgsmålet stadig åbent, hvis nogen har lettere måder at detectere brug af Firefox med IE Tab, eller detectere om brugeren gør brug af tvungent faneblad i stedet for nyt popup vindue.
Avatar billede gurly Praktikant
24. august 2009 - 02:07 #8
Ja det ser ud til at man kan bruge følgende kode til at tjekke om vinduet bliver åbnet korrekt, som et popup vindue,
eller om det bliver åbnet som et faneblad, fordi bruger har indstillet i explorer at alle popup vinduer ikke må åbne i et nyt vindue, men skal åbne i et faneblad.

Og samtidig kan man fange Firefox med IE Tab brugere,
men for at fange den er det vigtigt at siden åbnes fra et bestemt link med bestemt størelse tilpasses testen >

<a href="test.htm" rel="nofollow" target="_blank" title="Message" onclick="window.open('test.htm','','toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, width=300, height=300'); return false;">Open test side</a>

Det ser ud til at i IE Tab der åbner den kun siden i 300 linier i randerings motoren fra eksplorer, det tager den fra linket, så selv om den åbner i faner, så siger den kun 300 hvis man tester
document.body.clientWidth
(også selv og der er langt mere i selve firefox vinduet)

Derfor skilles den ud i testen som ligger på siden test.htm >

<html>
<head>

<script type="text/javascript"><!--
function tjek(){
if ((navigator.appVersion >= "4") && (navigator.appName == "Microsoft Internet Explorer")) {
start();
} else {
  alert("You need Internet Explorer");
}
}
//-->
</script>

<script type="text/javascript"><!--
function start(){
  var correctwidth=800
  var correctheight=600
  if (screen.width<correctwidth||screen.height<correctheight) {
  alert("Your screen resolution is too small");
  } else {
  self.moveTo(0,0);
  self.resizeTo(300,300);
  setTimeout("start2();",1000);
  }
}
//-->
</script>

<script type="text/javascript"><!--
function start2(){
  self.moveTo(0,0);
  self.resizeTo(250,250);
  var correctwidth=260
  if (document.body.clientWidth<correctwidth) {
  alert("Dit vindue supportere resize, og ligger derfor i et selvstendigt vindue, ikke i et faneblad, indhold kan målrettes til default størelse");
  self.resizeTo(800,570);
  alert(document.body.clientWidth);
  }
  else
  {
  start3();;
  }
}
//-->
</script>

<script type="text/javascript"><!--
function start3(){
  var correctwidth=310
  if (document.body.clientWidth>correctwidth) {
  alert("Dit vindue ligger i et Faneblad, og kan derfor ikke resizes, indholdet af side målrettes imod test af klient wieth og hight");
  alert(document.body.clientWidth);
  }
  else
  {
  start4();;
  }
}
//-->
</script>

<script type="text/javascript"><!--
function start4(){
  var correctwidth=310
  if (document.body.clientWidth<correctwidth) {
  alert("Det kan næsten kun være Firefox med IE Tab der strander her, og det gør den også som efter planen");
  alert(document.body.clientWidth);
  }
  else
  {
  alert("For at se om der er mere ELSE, det ser det ikke ud til.");
  }
}
//-->
</script>

</head>

<body onload="tjek();">

<div align="center">
<p>indhold</p>
</div>

</body>
</html>
Avatar billede olebole Juniormester
24. august 2009 - 13:29 #9
Hej gurly. Jeg er på job og har ikke lige tid til at gennemtrawle dine yderst fyldige kommentarer - men glæder mig til at komme hjem og se, hvor du er kommet til  ;o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester