Avatar billede michaelthomassen Nybegynder
10. september 2003 - 09:54 Der er 11 kommentarer og
1 løsning

Check på frames

Jeg har inddelt min side i to frames, en venstre (en slags menu, som altid står til det samme) og en højre (hovedvinduet).

Nu vil jeg gerne have et javascript lagt ind på alle de sider der kan vises i den højre frame, som checker på om den venstre frame eksisterer.

F.eks. man går ind på siden main.html, som loader frame 1.html i venstre frame og 2.html i højre frame. Hvis man klikker på et menu punkt i den ventre frame bliver 3.html loaded i den højre frame. Alt dette fungerer fint på min side lige nu.

Hvis en bruger nu bookmarker 3.html og går direkte ind på denne side næste gang han åbner browseren, bilver framesettet jo ikke loaded. Jeg vil gerne have et check i 3.html som ser om framesettet er loaded og hvis ikke, skal den loade main.html.

Det mest optimale ville nok være at på en eller anden måde overføre en parameter til main.html, om hvilken side den skal loade i det højre vindue (3.html i stedet for 2.html i dette tilfælde), men så vidt jeg hører er dette ikke muligt ? Man skal i så fald oprette framesets for alle kombinationer for viste vinduer i framesettet, f.eks. en der hedder main1-2.html og main1-3.html.

Det skal lige siges at den kode der skal ligges ind i 2.html og 3.html osv. skal være den samme. Jeg gider ikke til at opdatere 50+ sider med forskellig kode.
Avatar billede di8leva Nybegynder
10. september 2003 - 10:15 #1
<script language="JavaScript">
if (location == top.location) {
    top.location.href = 'main.html';
}
</script>
Avatar billede di8leva Nybegynder
10. september 2003 - 10:16 #2
ellers måske:

<script language="JavaScript">
if (location.href == top.location.href) {
    top.location.href = 'main.html';
}
</script>
Avatar billede michaelthomassen Nybegynder
10. september 2003 - 10:45 #3
Den løsning kendte jeg faktisk godt. Ville bare høre om den optimale løsning (loade main.html med et side navn som parameter, og loade denne i højre frame), kunne laves ?
En anden løsning (hvis det ellers er muligt), kunne være at "oprette" frames uden at gå væk fra 3.html ?
Jeg vil gerne lige have be/af kræftet, at man ikke kan lave det på den anden måde, inden jeg giver point.
Avatar billede roenving Novice
10. september 2003 - 23:13 #4
En framing-løsning:

http://roenving.users.whitehat.dk/WD3Input.html

-- tryk på teksten nederst til venstre, hvor der står noget om framing, og sammenlign iøvrigt adresselinjen med ovenstående link !-)
Avatar billede michaelthomassen Nybegynder
11. september 2003 - 00:10 #5
Det ser meget fornuftigt ud roenvig. Kigger lige på det i morgen, og når det virker får du point.
Avatar billede michaelthomassen Nybegynder
11. september 2003 - 13:13 #6
Det ser ud til at virke roenving. Der er dog et par detaljer jeg gerne vil have rettet.
1. Når jeg nu går ind på en underframe (skriver adressen på underframen direkte i adressen f.eks. www.sidenavn.dk/2.php), loader mit frameset fint, bortset fra at det defaulte frameindhold (www.sidenavn.dk/index.htm) bliver loaded først og herefter bliver underframen loaded. Der dur ikke. Den skal loade underframen (2.php) først.
2. Samme fremgangsmåde som 1. Nu står adressen i browseren til f.eks. http://www.sidenavn.dk/index.htm?/2.php. Den skal bare stå til http://www.sidenavn.dk. Jeg gider ikke have at folk bookmarker en underframe (folk skal altid se velkomst siden (index.htm) først).
Avatar billede roenving Novice
11. september 2003 - 18:09 #7
1. Fordi det fungerer med frameset (eller noget som ligner), kan du ikke gøre det anderledes end at framen skal være loadet først, og jeg prøvede at finde en fornuftig løsning på at framen skulle loades uden default og først initieres, når loadSource-koden blev kørt, men så stod W3C-validatoren af, så hvis du er ligeglad med det kan du jo prøve at angive en tom src (src="about:blank") til framen og så:

<script language="javascript" type="text/javascript">
  function loadSource(){
  if (location.search!=""){
    src=unescape(location.search.substring(1));
  }else src="index.htm";
  top.frames['mainFrame'].location.href=src;
  }
</script>

2. Da folk som linker direkte til undersiden alligevel får forsiden til rådighed med tilbageknappen er det vel ikke et stort problem ?-)

-- det var ihvertfald min reaktion, da jeg lavede mit eget site !-)

-- og noget af problemet er, at adresselinjen _før_ et evt. # ikke kan ændres !-)

-- alternativet er, at du gør det via noget php-noget, hvilket ikke skulle være så omfattende, når du allerede har gang i php-maskinen !o]
Avatar billede michaelthomassen Nybegynder
12. september 2003 - 17:40 #8
Roenving smid et svar og få point :)

Hvad med "Menu med div" ( http://www.eksperten.dk/spm/399014 ), kan du hitte ud af noget der ?
Avatar billede roenving Novice
12. september 2003 - 21:02 #9
Velbekomme '-)

-- og menuen har jeg stadig liggende som link, men jeg har ikke haft tid til at overveje, hvad det er der skal til at løse problemet ...

-- måske bliver det også for kompliceret så løsningen måske hellere skal være at kalorius gemmes ved scroll (ofte vil det jo være rimeligt, at sige at konteksten falder væk, når man gør noget et andet sted !-)
Avatar billede michaelthomassen Nybegynder
12. september 2003 - 22:35 #10
Problemet med menuen er ikke at den flytter sig når man scroller (den bliver det rigtige sted). Problemet er at efter man har scrollet lidt ned, og herefter klikker (aktiverer) menuen, står den det forkerte sted.

Prøv engang at smide min kode ind i et tomt dokument, og kopier linien med linket 50 gange. Åben filen og scroll ned og klik på linket, så kan du se hvad jeg mener.
Avatar billede roenving Novice
12. september 2003 - 22:37 #11
oki !-)
Avatar billede roenving Novice
12. september 2003 - 22:37 #12
-- og tak da for points ;~}
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