Avatar billede ordinary Nybegynder
10. oktober 2001 - 13:32 Der er 12 kommentarer og
2 løsninger

dhtml - fejl i \"crossbrowser detection\"

Jeg er igang med at brygge et script ved hjælp af tutorials - kigget på 
http://www.htmlguru.com/content/tutorials/curious_eye/index.html men den virker ikke i ns6
Jeg forsøgte med at udvide \"crossbrowser detection\" således:

<SCRIPT LANGUAGE=\"JavaScript\">
function Is() {
var agent = navigator.userAgent.toLowerCase();
this.major = parseInt(navigator.appVersion);
this.minor = parseFloat(navigator.appVersion);
this.ns = ((agent.indexOf(\'mozilla\') != -1) &&
(agent.indexOf(\'spoofer\') == -1) && (agent.indexOf(\'compatible\') == -1) && (agent.indexOf(\'opera\') == -1) && (agent.indexOf(\'webtv\') == -1));
this.ns2 = (this.ns && (this.major == 2));
this.ns3 = (this.ns && (this.major == 3));
this.ns4 = (this.ns && (this.major == 4));
this.ns6 = (this.ns && (this.major >= 5));
this.ie = (agent.indexOf(\"msie\") != -1);
this.ie3 = (this.ie && (this.major < 4));
this.ie4 = (this.ie && (this.major == 4) && (agent.indexOf(\"msie 5.0\")  == -1));
this.ie5 = (this.ie && (this.major == 4) && (agent.indexOf(\"msie 5.0\") != -1));
this.ieX = (this.ie && !this.ie3 && !this.ie4);
}
var is = new Is();

if(is.ns4) {
doc = \"document.layers\";
sty = \"\";}
else if(is.ie4) {
    doc = \"document.all\";
    sty = \".style\";}
else if (is.ie5 || is.ns6) {
    doc = \"document.getElementById\";
    sty = \".style\";}

Men det virker stadig ikke; Hjælp!!!!
Der kan være en eller mange fejl virker den i hele taget i ns4?????

Hvordan tjekker jeg om den virker i alle browsere Skal jeg have mange indstalleret?
Venlig hilsen Jesper
Ps skriver ikke hele scriptet for at spare plads.
Avatar billede nikolajdu Nybegynder
10. oktober 2001 - 14:34 #1
spoofer og webtv. hmmm interessant.

Hvis du undlader dem kunne du nøjes med:

ns4 = (document.layers)? true:false // NS 4.x
ie4 = (document.all)? true:false //IE 4.0
ie5 =(document.getElementById)? true:false // IE 5.0,5.5,6.0
ns6 = (document.getElementById && !document.all)?true:false; // NS 6.x

if (ns4){
doc = \"document.layers\"
sty = \"\"
}else if (ns6||ie5){
doc = \"document.getElementById\"
sty = \".style\"
}else if (ie4) {
doc = \"document.all\"
sty = \".style\"
}

Om du skal have mange installeret. Tja det er det bedste. F.eks har jeg installeret Netscape 4.73, Netscape 6.0 og Opera 5.

Da jeg har 2 styresystemer inde (´98 og XP) har jeg også muligheden for flere IE versioner. Her 5.0 og 6.0

/Nikolaj
Avatar billede jakoba Nybegynder
10. oktober 2001 - 14:45 #2
ordinary >> for velvillig ekspert, vær venlig at lade være med at sende spam mails.
Avatar billede nikolajdu Nybegynder
10. oktober 2001 - 14:52 #3
jakoba??
Avatar billede ordinary Nybegynder
10. oktober 2001 - 16:02 #4

nikolajdu: 1b ok besvarelse men 1a
Det virker ikke!!! 
jeg har uploadet mit projekt til
http://www.ordinary.subnet.dk/eks.html
håber det gør det lidt nemmere for jer.

jakoba: Jeg er ked af du tog det på den måde, jeg faldte over dine besvarelser og tænkte han må kunne hjælpe, derfor bad jeg dig kigge på denne side i en mail til dig, ikke ment som spam, jeg er klar over hvis alle gør sådan må det være irriterende, men det skal understreges at det ikke var ment som en hån, men det modsatte.
Avatar billede olebole Juniormester
10. oktober 2001 - 19:49 #5
<ole>
ordinary >> Jeg abonnerer på både JavaScript-, (D)HTML- og Generelt kategorierne. Jeg er efterhånden vandt til i ny og næ at blive tip\'et om et spørgsmål - enten af spørgeren selv eller af en anden bruger, som mener at vide, at jeg kan svare på det pågældende spm. Om jeg modtager 125 eller 126 mails på en dag fra Eksperten, gør såmænd ikke den store forskel. Bare det ikke spreder sig \'ukontrolleret\'  :)

Nå, til spørgsmålet: Jeg er såmænd ganske enig med nikolajdu...det er temmelig overflødigt at teste for alle de browsere. Flere af dem er der langt under én procent af brugerne, der anvender.
Flere af dem har jeg ingen idé om, hvad returnerer, når man spørger til dem - og jeg har ikke i sinde at installere dem, så jeg kan teste.
Hvad skal du bruge det til og hvorfor vil du teste for alle dem?
/mvh
</bole>
Avatar billede nikolajdu Nybegynder
10. oktober 2001 - 19:54 #6
1. Ordinary - Hvis en del af mit svar er ok, så er der vel ingen grund til at afvise mig???

2. Vil du have ovenstående link til at funke??? Du siger det ikke virker i NS 6.0, men det virker foreløbigt heller ikke i min IE 5.0.

Som du har lavet det nu manlger der et par ting i din henvisning til objekterne.

Du bruger nu:

document.getElementById.alyr.style
document.all.alyr.style
document.layers.alyr.style

Det skal være sådan her:

document.getElementById(\'alyr\').style
document.all[\'alyr\'].style
document.layers.[\'alyr\'].style

For at du så kan få det til at virke med flere objekter er du nødt til at script(\'blabla\') ind også - Eller bedre en variabel. getElementByID(variabel).style

I din funktioner skal du så indsætte det pågældende objekt der skal berøres.

Anyway får jeg også en hel del \"belastende\" mails, så jeg tror lige jeg updater mit minisite.

/Nikolaj
Avatar billede ordinary Nybegynder
10. oktober 2001 - 23:48 #7
Stop besvarelser!!!

Ny på siden lærer af feedbacken.
nikolajdu:  afviser ikke din besvarelse på 1b
skriver netop at den er ok.
Men det er jo kun et underspørgsmål,
og afviser dit svar som det endelige svar.
spoofer og webtv: som skrevet er jeg på \"tutorials niveau\"
og det stod der, og det genere ikke.

Du gav mig et ret godt spor i sagen
(****  document.getElementById(\'alyr\').style og ikke document.getElementById[\'alyr\'].style  ****)
vælger at bruge scriptet, som det er med den ændring og ikke din måde.


Så hvordan deler man i porten??? 


Venlig hilsen Jesper








Scriptet bliver:

<SCRIPT LANGUAGE=\"JavaScript\">
function Is() {
var agent = navigator.userAgent.toLowerCase();
this.major = parseInt(navigator.appVersion);
this.ns = ((agent.indexOf(\'mozilla\') != -1) && ((agent.indexOf(\'spoofer\')==-1) && (agent.indexOf(\'compatible\') == -1)));

this.ns4 = (this.ns && (this.major == 4));
this.ns6 = (this.ns && (this.major >= 5));
this.ie = (agent.indexOf(\"msie\") != -1);

this.ie4 = (this.ie && (this.major == 4) && (agent.indexOf(\"msie 5.0\")  == -1));
this.ie5 = (this.ie && (this.major == 4) && (agent.indexOf(\"msie 5.0\") != -1));
this.ieX = (this.ie && !this.ie4 && !this.ie5 && !this.ns4 && !this.ns6);
}

var is = new Is();

if(is.ns4) {
doc = \"document.layers\";
sty = \"\";
}

else if(is.ie4) {
    doc = \"document.all\";
    sty = \".style\";
}

else if (is.ns6 || is.ie5) {
    doc = \"document.getElementById\";
    sty = \".style\";
}

function positionLayers() {
if(is.ns6 || is.ie5) {
    aObj = eval(doc + \'(\"alyr\")\' + sty);
    bObj = eval(doc + \'(\"blyr\")\' + sty);
    cObj = eval(doc + \'(\"clyr\")\' + sty);
    dObj = eval(doc + \'(\"dlyr\")\' + sty);
    eObj = eval(doc + \'(\"elyr\")\' + sty);
 
fObj = eval(doc + \'[\"flyr\"]\' + sty);
gObj = eval(doc + \'[\"glyr\"]\' + sty);
hObj = eval(doc + \'[\"hlyr\"]\' + sty);
iObj = eval(doc + \'[\"ilyr\"]\' + sty);
jObj = eval(doc + \'[\"jlyr\"]\' + sty);
kObj = eval(doc + \'[\"klyr\"]\' + sty);

    menuToggle(\'a\');
    menubeskr(\'k\');
}
else {
    aObj = eval(doc + \'[\"alyr\"]\' + sty);
    bObj = eval(doc + \'[\"blyr\"]\' + sty);
    cObj = eval(doc + \'[\"clyr\"]\' + sty);
    dObj = eval(doc + \'[\"dlyr\"]\' + sty);
    eObj = eval(doc + \'[\"elyr\"]\' + sty);
 
fObj = eval(doc + \'[\"flyr\"]\' + sty);
gObj = eval(doc + \'[\"glyr\"]\' + sty);
hObj = eval(doc + \'[\"hlyr\"]\' + sty);
iObj = eval(doc + \'[\"ilyr\"]\' + sty);
jObj = eval(doc + \'[\"jlyr\"]\' + sty);
kObj = eval(doc + \'[\"klyr\"]\' + sty);

    menuToggle(\'a\');
    menubeskr(\'k\');
}}

var menu_selection = \"a\";

function menuToggle(selection) {
var old_page = eval(menu_selection + \"Obj\");
old_page.visibility = \"hidden\";

var new_page = eval(selection + \"Obj\");
new_page.visibility = \"visible\";

menu_selection = selection;
}

var menu_beskriv = \"k\";

function menubeskr(selection) {
var old_page = eval(menu_beskriv + \"Obj\");
old_page.visibility = \"hidden\";

var new_page = eval(selection + \"Obj\");
new_page.visibility = \"visible\";

menu_beskriv = selection;
}

var loop = true;
var direction = \"up\";
var speed = 10;
var timer1 = null;

function scroll(dir,spd) {
direction = dir;
speed = spd;
var page = eval(menu_selection + \"Obj\");
var y_pos = parseInt(page.top);
if(loop == true) {
if(direction == \"dn\") {
page.top = (y_pos-(speed));
} else if(direction == \"up\" && y_pos < 10) {
page.top = (y_pos+(speed));
} else if(direction == \"top\") {
page.top = 10;
}
timer1 = setTimeout(\"scroll(direction,speed)\", 2);
}
}
</SCRIPT>
Avatar billede 3brugere Nybegynder
10. oktober 2001 - 23:48 #8
Avatar billede ordinary Nybegynder
11. oktober 2001 - 00:03 #9
Ok der har vi rigtig spam fra 3brugere.
Jeg håber ikke I betragter mit iver efter at få nogle til at besvare,
så grovt som dette ;0D
Avatar billede nikolajdu Nybegynder
11. oktober 2001 - 10:07 #10
ordinary - Jeg er som regel yderst villige til at hjælpe, men men men men.

Når jeg har svaret, så lader du mit svar stå og afviser mig ikke. Jeg sidder jo ikke og tager pis på dig.

Du kan altid når problemet er løst fordele point mellem flere svarere eller afvise mig der.

/Nikolaj
Avatar billede ordinary Nybegynder
11. oktober 2001 - 20:27 #11
nikolajdu: ok det er sådan det fungerer.
Kan du ikke komme med et sidste svar.
Du kan feks fortælle hvad jeg så gør, jeg trykker accepter på din kommende besvarelse og så?
eller?
Avatar billede nikolajdu Nybegynder
17. oktober 2001 - 15:20 #12
Hvis du vil give flere brugere point eller selv have lidt, så lav et svar selv og klik \"avanceret\" - Nu kan du selv fordele pointene mellem folk.
Avatar billede ordinary Nybegynder
17. oktober 2001 - 17:21 #13
Jeg takker med 50 point fordi, du oplyste mig.
Jeg ved stadig ikke om den virker i mere end ns6 og ie 5.5, men det må komme senere, for lige nu er det menuen der skal laves færdig, men endnu engang er jeg strandet.
Avatar billede nikolajdu Nybegynder
17. oktober 2001 - 19:12 #14
Du må jo spørge igen så :-)
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