Avatar billede slasher_x Novice
10. august 2004 - 11:21 Der er 8 kommentarer og
1 løsning

script der tjekker browserversion

Hej! jeg er ved at lave en side, som bl.a. består af en <Iframe>
Ovenover har jeg en menu lavet i Javascript. Mit problem er at menuen ikke kan overlappe rammen nedenunder i ældre versioner af IE og sikkert også i andre browsere! Så derofr vil jeg lave en alternativ side som personer med ældre/andre browsere kan ledes hen til! hvordan laver man et script der tjekker browser + version og udfra resultatet videresender brugeren?

På forhånd tak

Mikael
Avatar billede roenving Novice
10. august 2004 - 11:29 #1
Find en menu, som ikke har problemer med frames !-)
Avatar billede slasher_x Novice
10. august 2004 - 12:30 #2
pas! det er jo åbenbart kun nyere versioner der understøtter overlapning i forb. med dynamiske rammer.. Det er muligt at den bedste løsning ville være at finde en anden menu, men nu holder jeg fast ved den løsning jeg har! så derfor, som der står i mit spm., hvordan laver man et script der tjekker browser + version og udfra resultatet videresender brugeren?
Avatar billede mm12010 Nybegynder
10. august 2004 - 14:10 #3
her er browser-snifferen fra coolmenus:

/*Browsercheck object*/
function cm_bwcheck(){
    //In theory we should use object detection, but this script needs work-arounds for almost every browser...
    this.ver=navigator.appVersion
    this.agent=navigator.userAgent.toLowerCase()
    this.dom=document.getElementById?1:0
    this.ns4=(!this.dom && document.layers)?1:0;
    this.op=window.opera
    this.moz=(this.agent.indexOf("gecko")>-1 || window.sidebar)
    this.ie=this.agent.indexOf("msie")>-1 && !this.op
    if(this.op){
        this.op5=(this.agent.indexOf("opera 5")>-1 || this.agent.indexOf("opera/5")>-1)
        this.op6=(this.agent.indexOf("opera 6")>-1 || this.agent.indexOf("opera/6")>-1)
        this.op7=this.dom&&!this.op5&&!this.op6 //So all higher opera versions will use it
    }else if(this.moz) this.ns6 = 1
    else if(this.ie){
        this.ie4 = !this.dom && document.all
        this.ie5 = (this.agent.indexOf("msie 5")>-1)
        this.ie55 = (this.ie5 && this.agent.indexOf("msie 5.5")>-1)
        this.ie6 = this.dom && !this.ie4 && !this.ie5 && ! this.ie55
    }
    this.mac=(this.agent.indexOf("mac")>-1)
    this.bw=(this.ie6 || this.ie5 || this.ie4 || this.ns4 || this.ns6 || this.op5 || this.op6 || this.op7)
  this.usedom= this.ns6||this.op7//Use dom creation
  this.reuse = this.ie||this.op7||this.usedom //Reuse layers
  this.px=this.dom&&!this.op5?"px":""
    return this
}
var bw=new cm_bwcheck()

herefter kan du sende brugeren videre sådan, ex:

if(bw.ie4)location.href="side_til_brugere_med_ie4.html";
Avatar billede slasher_x Novice
10. august 2004 - 16:02 #4
ok! jeg kan desværre ikke prøve det før i morgen. Men tak for hjælpen indtil videre..
Avatar billede slasher_x Novice
11. august 2004 - 08:44 #5
jeg kan ikke få det til at virke! får bare en blank side, men det er sikkert bare mig der placerer det forkert eller noget i den stil.  Jeg har indsast det således:

<html>
<head>
<SCRIPT LANGUAGE="Javascript">
function cm_bwcheck(){
    //In theory we should use object detection, but this script needs work-arounds for almost every browser...
    this.ver=navigator.appVersion
    this.agent=navigator.userAgent.toLowerCase()
    this.dom=document.getElementById?1:0
    this.ns4=(!this.dom && document.layers)?1:0;
    this.op=window.opera
    this.moz=(this.agent.indexOf("gecko")>-1 || window.sidebar)
    this.ie=this.agent.indexOf("msie")>-1 && !this.op
    if(this.op){
        this.op5=(this.agent.indexOf("opera 5")>-1 || this.agent.indexOf("opera/5")>-1)
        this.op6=(this.agent.indexOf("opera 6")>-1 || this.agent.indexOf("opera/6")>-1)
        this.op7=this.dom&&!this.op5&&!this.op6 //So all higher opera versions will use it
    }else if(this.moz) this.ns6 = 1
    else if(this.ie){
        this.ie4 = !this.dom && document.all
        this.ie5 = (this.agent.indexOf("msie 5")>-1)
        this.ie55 = (this.ie5 && this.agent.indexOf("msie 5.5")>-1)
        this.ie6 = this.dom && !this.ie4 && !this.ie5 && ! this.ie55
    }
    this.mac=(this.agent.indexOf("mac")>-1)
    this.bw=(this.ie6 || this.ie5 || this.ie4 || this.ns4 || this.ns6 || this.op5 || this.op6 || this.op7)
  this.usedom= this.ns6||this.op7//Use dom creation
  this.reuse = this.ie||this.op7||this.usedom //Reuse layers
  this.px=this.dom&&!this.op5?"px":""
    return this
}
var bw=new cm_bwcheck()

if(bw.ie4)location.href="index.html";
</script>
</head>
<body onload="cm_bwcheck()">

</html>
Avatar billede slasher_x Novice
11. august 2004 - 08:52 #6
Det var bare mig der sov i timen... Efter at have kigget på koden ku jeg godt se at den var helt gal! følgende eksempel virker:

<html>
<head>
<SCRIPT LANGUAGE="Javascript">
function cm_bwcheck(){
    //In theory we should use object detection, but this script needs work-arounds for almost every browser...
    this.ver=navigator.appVersion
    this.agent=navigator.userAgent.toLowerCase()
    this.dom=document.getElementById?1:0
    this.ns4=(!this.dom && document.layers)?1:0;
    this.op=window.opera
    this.moz=(this.agent.indexOf("gecko")>-1 || window.sidebar)
    this.ie=this.agent.indexOf("msie")>-1 && !this.op
    if(this.op){
        this.op5=(this.agent.indexOf("opera 5")>-1 || this.agent.indexOf("opera/5")>-1)
        this.op6=(this.agent.indexOf("opera 6")>-1 || this.agent.indexOf("opera/6")>-1)
        this.op7=this.dom&&!this.op5&&!this.op6 //So all higher opera versions will use it
    }else if(this.moz) this.ns6 = 1
    else if(this.ie){
        this.ie4 = !this.dom && document.all
        this.ie5 = (this.agent.indexOf("msie 5")>-1)
        this.ie55 = (this.ie5 && this.agent.indexOf("msie 5.5")>-1)
        this.ie6 = this.dom && !this.ie4 && !this.ie5 && ! this.ie55
    }
    this.mac=(this.agent.indexOf("mac")>-1)
    this.bw=(this.ie6 || this.ie5 || this.ie4 || this.ns4 || this.ns6 || this.op5 || this.op6 || this.op7)
  this.usedom= this.ns6||this.op7//Use dom creation
  this.reuse = this.ie||this.op7||this.usedom //Reuse layers
  this.px=this.dom&&!this.op5?"px":""
    return this
}
</script>
<SCRIPT LANGUAGE="Javascript">
function redirect(){
    var bw=new cm_bwcheck()

    if(bw.ie5){
    location.href="index.html";
    }
    else{
    location.href="index5+.html";
    }
}
</script>
</head>
<body onload=redirect()>


</html>

>> mm12010, hvis du vil have point så læg et svar!
Avatar billede mm12010 Nybegynder
11. august 2004 - 09:35 #7
lidt afhængigt af hvormange og hvilke browsere du vil tjecke for, kan scriptet kortes en del ned - her er en lidt mere korrekt måde at skrive ovenstående på:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script type="text/javascript">
function cm_bwcheck(){
    this.ver=navigator.appVersion
    this.agent=navigator.userAgent.toLowerCase()
    this.dom=document.getElementById?1:0
    this.ns4=(!this.dom && document.layers)?1:0;
    this.op=window.opera
    this.moz=(this.agent.indexOf("gecko")>-1 || window.sidebar)
    this.ie=this.agent.indexOf("msie")>-1 && !this.op
    if(this.op){
        this.op5=(this.agent.indexOf("opera 5")>-1 || this.agent.indexOf("opera/5")>-1)
        this.op6=(this.agent.indexOf("opera 6")>-1 || this.agent.indexOf("opera/6")>-1)
        this.op7=this.dom&&!this.op5&&!this.op6 //So all higher opera versions will use it
    }else if(this.moz) this.ns6 = 1
    else if(this.ie){
        this.ie4 = !this.dom && document.all
        this.ie5 = (this.agent.indexOf("msie 5")>-1)
        this.ie55 = (this.ie5 && this.agent.indexOf("msie 5.5")>-1)
        this.ie6 = this.dom && !this.ie4 && !this.ie5 && ! this.ie55
    }
    this.mac=(this.agent.indexOf("mac")>-1)
    return this
}
var bw=new cm_bwcheck()
if(bw.ie5) location.href="index.html";
else location.href="index5+.html";
</script>
</head>
<body>
</body>
</html>
Avatar billede slasher_x Novice
11. august 2004 - 10:29 #8
virker perfekt! tak for hjælpen...
Avatar billede mm12010 Nybegynder
11. august 2004 - 10:39 #9
selv tak :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