Avatar billede visto Guru
07. november 2003 - 11:19 Der er 29 kommentarer og
2 løsninger

Javascripts i forskellige browsere

Jeg kan konstatere at to javascripts ikke fungere på forskellige maskiner, der kører med Internet Explorer 5.0. Det drejer sig om script'ene:

1)
<script type="text/javascript">
function oploesning()
{
  x = screen.width;
    y = screen.height;
    if(x >= 1280 && y>=1024) location.href="index_1280.htm";
    else if(x >= 1024 && y>=768) location.href = "index_1024.htm";
    else if (x >= 800 && y >= 600) location.href="index_800.htm";
    else location.href = "index_800.htm";}
oploesning();
</script>

2)
<script type="text/javascript">

var param= Array[2];
    adres = location.href;  // Hent index-filens adresse
    param = adres.split("?");  // Klip parameter fra, skal sendes videre til ny index-fil
    parameter="?" +param[1];
    if (param[1]== undefined) parameter="" // ingen underside requestet

function oploesning()
{   
    x = screen.width;
    y = screen.height;
    if(x >= 1280 && y>=1024) location.href="index_1280.htm"+parameter
    else if(x >= 1024 && y>=768) location.href = "index_1024.htm"+parameter;
    else if (x >= 800 && y >= 600) location.href="index_800.htm"+parameter;
    else location.href = "index_800.htm"+parameter;
}
oploesning();
</script>

3)
// Opret rammesæt med Javascipt
    html="<FRAMESET frameSpacing=0 rows=82,* frameBorder=0>"
    html +=    "<FRAME name=banner src='start/top/top_1024.htm' noResize scrolling=no >"
    html +=    "    <FRAMESET cols=110,*>"
    html +=    "        <FRAME name=indhold src='start/menu/menu_1024.htm' scrolling=no >"
    html +=    "        <FRAME name=hovedramme src=' "+parameter+" ' target='_self' >";
    html +=    "    </FRAMESET>"
    html+=    "</FRAMESET>"
//alert(html);
    document.write(html);
//--></SCRIPT>

Kan det virkeligt passe, at IE 5 ikke kan håndtere disse, eller ligger fejlen et andet sted?
Avatar billede visto Guru
07. november 2003 - 11:23 #1
I kan evt. tjekke om script 2), der skulle fungere på http://vinsiderne.dk
virker. Kommer I hen til en ny index-fil, fx med navnet index_1024.htm (hvis man har skærmopløsning 1024x768)?
Hvis det ikke virker, står der blot vinsiderne.dk/
Avatar billede hf Nybegynder
07. november 2003 - 12:04 #2
MSIE 5.0 melder scriptfejl: lin. 21 undefined er ikke defineret.
Fejlen forsvinder, hvis du i denne linie:
if (param[1]== undefined) parameter="" // ingen underside requestet
skriver: 'undefined'
istedet for: undefined
Avatar billede visto Guru
07. november 2003 - 13:54 #3
> hf: Jeg prøvede at rette som du skrev, men så viste der sig (i Internet Explorer 6) slet ingen startside (den side der ligger i hovedrammen), som om den ikke lå på serveren, så den går ikke.

Hvad med script 3) (i mit spørgsmål)?
Når jeg går ind på fx:
http://vinsiderne.dk/index_800.htm, hvor scriptet bl.a. ligger, så sker der på de nævnte maskiner med Internet Explorer Explorer 5 INTET: der generes intet frameset (katastrofe!).
Er det også sådan hos dig (eller en anden, der sidder med IE5)?

Jeg ville også være glad for om nogen kunne melde tilbage, om der er problemer med andre browsere.
Så lige for at reptere: hvis det går som det skal, når man går ind på http://vinsiderne.dk, skal der i browserens adresselinje komme til at stå en af flg. 3 muligheder: http://vinsiderne.dk/index_800.htm, http://vinsiderne.dk/index_1024.htm eller http://vinsiderne.dk/index_1280.htm. Og der skulle herefter gerne generes et frameset.
Avatar billede hf Nybegynder
07. november 2003 - 14:27 #4
Script 3 virker heller ikke.
Jeg har prøvet at lave en tilretning:
parameter = ""
adres = location.href;
param = adres.split("?");
if (adres.indexOf("?") >= 0) {
Avatar billede hf Nybegynder
07. november 2003 - 14:29 #5
Hovsa - blev ikke helt færdig:

adres = location.href;
param = adres.split("?");
if (adres.indexOf("?") >= 0) {
  if (param[1] != "") {
    parameter = "?" + param[1];
  }
}

Det ser ud til at virke
Avatar billede visto Guru
07. november 2003 - 15:12 #6
> hf: har prøvet dit forslag. Det medfører at scriptet slet ikke gør det som det skal: nemlig placere en underside, der forsøges loadet alene, inde i framesettet. Det virker ikke.
Avatar billede hf Nybegynder
10. november 2003 - 09:32 #7
Jeg har lavet et alternativ til array-metoden.
Det kan ses her:
http://hf.1go.dk/eksperten/spm424391/resolution.php
og med parameter:
http://hf.1go.dk/eksperten/spm424391/resolution.php?id=1

<script language="JavaScript">
adres = location.href;  // Hent index-filens adresse
plac = adres.indexOf("?");
if (plac >= 0) {
    parameter = adres.substring(plac+1,adres.length+1);
} else {
    parameter = "";
}
if (parameter.length > 0) parameter = "?" + parameter;

function oploesning()
{   
    x = screen.width;
  y = screen.height;
  if(x >= 1280 && y>=1024) alert("index_1280.htm"+parameter);
  else if(x >= 1024 && y>=768) alert("index_1024.htm"+parameter);
  else if (x >= 800 && y >= 600) alert("index_800.htm"+parameter);
  else alert("index_800.htm"+parameter);
}
oploesning();
</script>

Det er testet og virker i:
MSIE 4.0 - 5.0 og 6.0 (Windows)
Netscape Navigator 4.7 og 6.2 (Windows)
MSIE 4.0 - 5.0 - 5.1 (Macintosh)
Avatar billede visto Guru
10. november 2003 - 10:03 #8
Forstår ikke. Npr jeg klikker på dine links, sker flg:
Øverset link: der fremkommer en dialogboks med beskeden index_10214.htm
Neders´te link: der fremkommer en dialogboks med beskeden index_1024.htm?id=1
Ellers blot blanke sider bagved.
??
Avatar billede hf Nybegynder
10. november 2003 - 10:21 #9
Ja det er korrekt - det er for at vise værdien af variablen parameter - for at teste om script2 virker.
Jeg har blot indsat alert istedet for location.href.

Her er det uden alert:

<script language="JavaScript">
adres = location.href;  // Hent index-filens adresse
plac = adres.indexOf("?");
if (plac >= 0) {
    parameter = adres.substring(plac+1,adres.length+1);
} else {
    parameter = "";
}
if (parameter.length > 0) parameter = "?" + parameter;

function oploesning()
{   
    x = screen.width;
  y = screen.height;
  if(x >= 1280 && y>=1024) location.href="index_1280.htm"+parameter;
  else if(x >= 1024 && y>=768) location.href="index_1024.htm"+parameter;
  else if (x >= 800 && y >= 600) location.href"index_800.htm"+parameter;
  else location.href="index_800.htm"+parameter;
}
oploesning();
</script>
Avatar billede visto Guru
10. november 2003 - 12:01 #10
Jeg har prøvet i min index.htm fil at erstatte

<script type="text/javascript">

var param= Array[2];
    adres = location.href;  // Hent index-filens adresse
    param = adres.split("?");  // Klip parameter fra, skal sendes videre til ny index-fil
    parameter="?" +param[1];
    if (param[1]== undefined) parameter="" // ingen underside requestet

function oploesning()
{   
    x = screen.width;
    y = screen.height;
    if(x >= 1280 && y>=1024) location.href="index_1280.htm"+parameter
    else if(x >= 1024 && y>=768) location.href = "index_1024.htm"+parameter;
    else if (x >= 800 && y >= 600) location.href="index_800.htm"+parameter;
    else location.href = "index_800.htm"+parameter;
}
oploesning();
</script>

med dit forslag:

<script language="JavaScript">
adres = location.href;  // Hent index-filens adresse
plac = adres.indexOf("?");
if (plac >= 0) {
    parameter = adres.substring(plac+1,adres.length+1);
} else {
    parameter = "";
}
if (parameter.length > 0) parameter = "?" + parameter;

function oploesning()
{   
    x = screen.width;
  y = screen.height;
  if(x >= 1280 && y>=1024) location.href="index_1280.htm"+parameter;
  else if(x >= 1024 && y>=768) location.href="index_1024.htm"+parameter;
  else if (x >= 800 && y >= 600) location.href"index_800.htm"+parameter;
  else location.href="index_800.htm"+parameter;
}
oploesning();
</script>

Jeg kommer herved ikke længere (på min 1024x768 skærm) over på index_1024.htm. Desuden viser der sig en gul trekant med et udråbstegn i proceslinjen, som vist betyder fejl. Under alle omstændigheder virker det ikke.

Nu kan jeg ikke for alvor læse javascripts (det er derfor jeg henter hjælp her), men jeg kan ikke umiddelbart få øje på, at dit script

<script language="JavaScript">
adres = location.href;  // Hent index-filens adresse
plac = adres.indexOf("?");
if (plac >= 0) {
    parameter = adres.substring(plac+1,adres.length+1);
} else {
    parameter = "";
}
if (parameter.length > 0) parameter = "?" + parameter;

gør det samme som det oprindelige, nemlig at klippe undersiden fra, så den ikke indlæses, men sendes videre til det nye index (fx inde_1024.htm). Har jeg ret i denne fornemmelse?
Scriptet der henviser til forskellige index'er er jo identiske i det jeg har i forvejen, og det du har lavet, så fejlen må ligge i første del, der som nævnt, aflyser anden del.
Avatar billede hf Nybegynder
10. november 2003 - 12:20 #11
Prøv at dobbeltklikke på den gule advarselstrekant, så får du fejlbeskrivelsen frem.
Avatar billede visto Guru
10. november 2003 - 12:48 #12
"Problemer med denne webside kan forhindre den i at blive vist korrekt eller fungere korrekt. Fremover kan du få vist denne meddelelse ved at dobbeltklikke....."
Avatar billede visto Guru
10. november 2003 - 13:03 #13
>hf: Når nu du har adgang til at teste i alle de forskellige browsere du nævnte tidligere, kunne du så ikke lige tjekke, hvad der sker når du går ind på http://vinsiderne.dk i de forskellige browsere?

Hvis det fungerer som det skal, skal der (i hvert fald i Internet Exp.) ende med (grundet det henvisende script) stå enten http://vinsiderne.dk/index_800.htm, http://vinsiderne.dk/index_1024.htm eller http://vinsiderne.dk/index_1280.htm. Hvis det ikke lykkes for scriptet at henvise til en ny index-fil, står der blot http://vinsiderne.dk/

Hvis de scripts der genererer framsets på http://vinsiderne.dk/index_800.htm, http://vinsiderne.dk/index_1024.htm eller http://vinsiderne.dk/index_1280.htm virker som de skal, ser man framesettet med indhold, hvis ikke: blank side. Så prøv at gå ind på fx http://vinsiderne.dk/index_800.htm og se hvad der sker.

Som jeg antydede indledningsvis i mit spørgsmål, så ved jeg jo ikke hvad det er der gør at det ikke virker på maskinerne med IE 5, om det er browser-verion eller noget helt andet. Så en test som den jeg lige har beskrevet ovenfor, kunne klarlægge problemet helt præcist, før jeg begynder at ændre alle muligt.
Avatar billede visto Guru
10. november 2003 - 13:10 #14
Jeg glemte lige: Hvis du går ind på:
http://vinsiderne.dk/vin/vurderinger/il_grigio.htm
kan det konstateres om, det lykkes at få siden om Il Grigio vist i framesettet, som meningen er, eller om framesettet loades og kun viser forsiden. Det må du også godt lige fortælle mig.
Som sagt virker det i IE6 men ikke på føromalte maskiner med IE5, men igen: jeg ved ikke om det skyldes browserverion eller andet.
Avatar billede hf Nybegynder
10. november 2003 - 14:16 #15
Både "http://vinsiderne.dk" og "http://vinsiderne.dk/vin/vurderinger/il_grigio.htm" fungerer ikke i MSIE 4.0 og 5.0 Mac og Win

Hvis du vil have mit løsningsforslag til at køre, skal du rette på alle sider hvor scriptet er brugt.

Der skulle ikke være noget funktionsmæssig der er anderledes i forhold til det oprindelige script.
Avatar billede visto Guru
10. november 2003 - 15:06 #16
> hf:
1) Når du skriver at http://vinsiderne.dk ikke fungerer i MSIE 4.0 og 5.0 Mac og Win, så mener du vel, at der ikke sker noget skift til de korrekte skærmopløsnings-index'er, ikke? - altså at scriptet med skærmopløsningshenvisninger ikke virker, ikke? Du mener (forhåbentlig) ikke, at http://vinsiderne.dk ikke ses, vel???

2) Når du skriver, at http://vinsiderne.dk/vin/vurderinger/il_grigio.htm ikke fungerer mener du så ikke tilsvarende, at Il Grigio-siden ikke ses, men at frameset med startsiden ses normalt?

3) Som jeg skrev tidligere, så virker dit script ikke hos mig: Der sker ikke noget skift til en anden index-fil, så aktuelt kan jeg jo ikke rette det.
Avatar billede roenving Novice
10. november 2003 - 19:41 #17
I stedet for at splitte din streng på '?' kan du bare bruge location.search, som leverer det som står fra ? og videre (inklusive spørgsmål-tegnet !-)
Avatar billede hf Nybegynder
11. november 2003 - 11:18 #18
1: Korrekt
2: Korrekt
3: Jeg har lavet et eksempel med udgangspunkt i dine filer:
http://hf.1go.dk/eksperten/spm424391/index.htm
http://hf.1go.dk/eksperten/spm424391/intro_1024_1280.htm
http://hf.1go.dk/eksperten/spm424391/underside.htm

Det er testet og virker i MSIE 4.0, 5.0, 6.0, NN 6.2 Win og MSIE 4.0, 5.1 Mac

Her er html'en:

index.htm
------------------------------------------
<html>
<head>
<script language="JavaScript">
adres = location.href;  // Hent index-filens adresse
plac = adres.indexOf("?");
if (plac >= 0) {
    parameter = adres.substring(plac+1,adres.length+1);
} else {
    parameter = "";
}
if (parameter.length > 0) parameter = "?" + parameter;

function oploesning()
{   
    x = screen.width;
  y = screen.height;
  if(x >= 1280 && y>=1024) location.href="index_1280.htm"+parameter;
  else if(x >= 1024 && y>=768) location.href="index_1024.htm"+parameter;
  else if (x >= 800 && y >= 600) location.href="index_800.htm"+parameter;
  else location.href="index_800.htm"+parameter;
}
oploesning();
</script>
</head>
<frameset framespacing="0" frameborder="0" rows="82,*">
  <frame name="banner" scrolling="no" noresize target="indhold" src="start/top/top_1024.htm">
  <frameset cols="110,*">
    <frame name="indhold" target="hovedramme" src="start/menu/menu_1024.htm" scrolling="no">
    <frame name="hovedramme" src="start/intro/intro_uden_java.htm" target="_self" scrolling="auto">
  </frameset>
  <noframes>
  <body>
  <p>Vinanbefalinger og vin-info, især italienske og franske vine</p>
  </body>
  </noframes>
</frameset>
</html>


index_1024.htm
----------------------------------------------
<html>
<head>
</head>
<SCRIPT language=javascript><!--
function blank(){
  return"<html></html>"
}
var param= Array[2];
adres = location.href;  // Hent index-filens adresse
plac = adres.indexOf("?");
if (plac >= 0) {
    parameter = adres.substring(plac+1,adres.length+1);
} else {
    parameter = "intro_1024_1280.htm";
}
// Opret rammesæt med Javascipt
    html="<FRAMESET frameSpacing=0 rows=82,*>"
    html +=    "<FRAME name=banner src='top_1024.htm' noResize scrolling=no frameBorder=0>"
    html +=    "    <FRAMESET cols=110,*>"
    html +=    "        <FRAME name=indhold src='menu_1024.htm' scrolling=no frameBorder=0>"
    html +=    "        <FRAME name=hovedramme src=' "+parameter+" ' target='_self' frameBorder=0>";
    html +=    "    </FRAMESET>"
    html+=    "</FRAMESET>"
    document.write(html);
//--></SCRIPT>

<frameset>
  <noframes>
  <body>
  <p>Vinanbefalinger og vin-info, især italienske og franske vine</p>
  </body>
  </noframes>
</frameset>

</html>


intro_1024_1280.htm
------------------------------------------
<html>
<head>
<script type="text/javascript" src="javascripts.js"></script>
<base target="_self">
</head>
<body>Intro 1024_1280
</body>
</html>


underside.htm
-----------------------------------
<html>
<head>
<script type="text/javascript" src="javascripts.js"></script>
</head>
<body>Underside
</body>


javascripts.js
-----------------------------------------
<!--
if (self.location.href == top.window.location.href)
{ top.window.location.replace("http://hf.1go.dk/eksperten/spm424391/index.htm" + "?" + self.location.href) }
//-->

:-)
Avatar billede visto Guru
11. november 2003 - 21:44 #19
> hj: tak for dit arbejde!
Jeg har desværre et par hårde arbejdsdage, hvor jeg ikke har tid til at afprøve dine bud, men jeg vender tilbage, så snart jeg kan.
Avatar billede visto Guru
13. november 2003 - 17:37 #20
> hj: det virker jo upåklageligt i IE6, og det er dybt opmuntrende med alle de platforme du skriver det virker på.
Så dit forslag er aktuelt det der er uploadet.
Jeg er spændt på at se hvordan det virker i morgen. hvor jeg har lejlighed til at afprøve i IE5.
Umiddelbart synes jeg det er mærkeligt, hvis index_1024.htm skulle virke, idet scriptet, der genererer framesettet, er det samme som før, og det gav blot blank skærm på IE5. Så hvis du (eller en anden) har mulighed for at gå ind på
http://vinsiderne.dk/index_1024.htm
i en IE5 eller ældre her i aften, og melde tilbage, ville det være fint. - Jeg hader tanken om risikoen for at brugeren henvises til en index der giver blank skærm!!!! Også selv om det blot er for en aften!
Kriteriet for at framesettet genereres er: der står http://vinsiderne.dk/index_1024.htm (eller _800 eller _1280) i adresselinjen, og der er andet at se på end blank skærm!
Avatar billede visto Guru
13. november 2003 - 17:39 #21
ikke > hj men > hf, sorry!
Avatar billede visto Guru
14. november 2003 - 09:01 #22
"Katastrofen" indfandt sig: Javascriptet der loader skærmopløsnings-afhængige index virker i IE5, MEN scriptet, der skal loade framesets virker IKKE i IE5 = blank skærm.
Avatar billede hf Nybegynder
14. november 2003 - 09:02 #23
Det går fremad, men ...
Du mangler at rette index.htm, index_800.htm og index_1280.htm.
De har stadig det oprindelige JavaScript, som forårsager fejlen der giver en blank side.
Ved 1024x768 fungerer det i alle de browsere jeg testede d. 11/11 (undt. MSIE 4.0 Win)

index_1024.htm fungerer, til trods for at det er samme frameset. Fordi fejlen opstår, når variablen "parameter" skal beregnes. Det sker i javascriptet, som jo er ændret.
Avatar billede hf Nybegynder
14. november 2003 - 09:05 #24
Når problemerne er løst, skal du måske overveje at optimere venstre-menuen. Den ser ikke for godt ud i MSIE på Mac! Men det kommer selvfølgelig an på, om du har et betydeligt antal Mac-surfere på dine sider.
Avatar billede hf Nybegynder
14. november 2003 - 09:17 #25
Hovsa - jeg glemte at skrive, at 1024 virker heller ikke virker i MSIE 5 Win.
Avatar billede visto Guru
14. november 2003 - 09:43 #26
> ret så vigtigt. Det er jo det spørgsmålet handler om....
Avatar billede hf Nybegynder
14. november 2003 - 09:52 #27
Ja, men det havde du jo selv konstateret. Desuden kommer det til at virke, hvis du retter de nævnte filer.
Jeg har lige testet i Mozilla 1.5 Win - og det virker.
Avatar billede visto Guru
14. november 2003 - 09:53 #28
Lige for en ordens skyld: det er nu de gamle versioner, der er på nettet, så man kan altså ikke gå ind og se nogle ændringer. Så hvis man har kigget efter 08:50 i dag, er det de oprindelige index'er der kan ses.
Avatar billede visto Guru
14. november 2003 - 09:56 #29
For klarheds skyld: Det jeg aktuelt mangler, er et script der kan generer framesets også i IE5. Uden et sådant er der intet at gå videre med.
Avatar billede hf Nybegynder
14. november 2003 - 09:59 #30
Jeg giver op.
Avatar billede visto Guru
14. november 2003 - 13:42 #31
> hk: OK, det forstår jeg godt. Men du fik dog knækket den første del, så der også i IE5 skiftes index afhængigt af skærmopløsning, når en underside forsøges indlæst. Derfor får du halvdelen af point.
Jeg må så håbe at jeg finder en løsning på frameset-scriptet, ellers går det jo ikke at der skiftes index.
Jeg må tilstå, at spørgsmålet har vist sig sværere end jeg havde troet, så havde jeg vidst det fra starten, havde jeg tildelt det flere point.

Jeg takker både for din indsats, og for din kommentar ang. menuen i Mac; det skal jeg have kigget på ved lejlighed.
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