Avatar billede mightythor Nybegynder
09. februar 2000 - 12:54 Der er 5 kommentarer og
1 løsning

Hjælp med frames

Hej Alle ***HJÆLP MIG***

Jeg har brug for at vide hvordan jeg kan lave et link til en side fra en anden, og få linket til at åbne op i det rigtige design.

Jeg har lavet siden: www.autonorden.dk
og det jeg har brug for er at når man klikker en på en side fra f.eks. vores importør, så skal det åbne op på den rigtige måde.

Eks.: www.autonorden.dk/nissan.htm

når jeg kalder denne side fra et eksternt link, så åbner den op i en selvstændig side.

Men jeg ville gerne have at det skulle se ud som om jeg havde åbnet www.autonorden.dk og derefter havde trykket på genvejen i sidepanelet

***HJÆLP***

Hilsen Søren
Avatar billede rea Nybegynder
09. februar 2000 - 14:43 #1
Kan du ikke lave et frameset hvor nissan.htm er main. Ulempen er bare at der ikke står www.autonorden.dk i adresselinjen men det du kalder dit frameset.

Jeg tror ikke det kan laves på nogen smart måde.

:-) rea
Avatar billede mjess Nybegynder
09. februar 2000 - 14:59 #2
Det kan laves vha. lidt javascript, samt cookies:

I filen 'nissan.htm' indsættes følgende i dit <script> tag:

-------------------------------------------------------
    function writeCookie(name, value, expires) {
        expires = expires.toGMTString();
        document.cookie = name + "=" + escape(value) + "; expires=" + expires + ";";
    }

    if (document.location.href == top.location.href){
        //write cookie
        var d = new Date();
        var h = d.getHours() + 1;
        if(h == 24) h = 0;
        d.setHours(h);

        writeCookie('subpage','nissan.htm',d)    // sæt side, der skal loades i 'main' frame
        alert(document.cookie);
        //redirect
        document.location.replace('default.htm');
    }
-------------------------------------------------------
koden kan benyttes tilsvarende i andre filer, der skal loades i 'main' framen - blot du udskifter 'nissan.htm' med navnet på den pågældende fil.



I filen 'main.htm' indsætter du så denne kode i dit <script> tag:

-------------------------------------------------------
    function readCookie(name) {
        var cookies = document.cookie;
        var start = cookies.indexOf(name + "=");

        if (start != -1) {
            start = cookies.indexOf("=", start) + 1;

            var end = cookies.indexOf(";", start);

            if (end == -1){
                end = cookies.length;
            }

            var value = unescape(cookies.substring(start,end));
        } else {
            var value = null;
        }

        return(value);

    }

    function deleteCookie (name) {
   
        var exp = new Date();
        writeCookie(name,name,exp);

    }

    function writeCookie(name, value, expires) {
        expires = expires.toGMTString();
        document.cookie = name + "=" + escape(value) + "; expires=" + expires + ";";
    }

    var sp = readCookie('subpage')
    alert(sp);
    if(sp == null){
        deleteCookie('subpage');
    }else{
        deleteCookie('subpage');
        alert(sp);
        document.location.href = sp;
    }
-------------------------------------------------------

Mvh. mjess
Avatar billede mjess Nybegynder
09. februar 2000 - 15:00 #3
Ups!

Der kom 2 x alert(sp) for meget med i slutningen af scriptet - de skal selvfølgelig slettes :-))
Avatar billede mjess Nybegynder
09. februar 2000 - 15:03 #4
..og en alert(document.cookie); for meget i nissan.htm afsnittet

Dem brugte jeg bare til debugging :-)))))
Avatar billede mightythor Nybegynder
09. februar 2000 - 15:19 #5
MJESS

Det fungerede bare perfekt.....

Hvis det ikke er for meget for langt, kunne jeg godt tænke mig en nærmere beskrivelse om hvad der rent faktisk sker i skriptet

Hilsen Søren (mightythor)
Avatar billede mjess Nybegynder
10. februar 2000 - 10:32 #6
OK

========= nissan.htm ===========

På siden 'nissan.htm', undersøges det om siden er loadet for sig selv i browseren:
  -- if (document.location.href == top.location.href) --
  'document.location.href' er adressen på dokumentet
  'top.loaction.href' er adressen på den øverste side i frame hierakiet
  hvis der ikke er brugt frames, vil de to adresser være ens.

Derefter laves et Date() objekt med den aktuelle tid, og der lægges en time til
  -- var d = new Date();
  -- var h = d.getHours() + 1;
  -- if(h == 24) h = 0;
  -- d.setHours(h);
  (Man kunne også have nøjedes med et minut)

Så sættes en cookie, med navnet 'subpage' og værdien 'nissan.htm', der er sat til at være gyldig en time.
  -- writeCookie('subpage','nissan.htm',d)
  (d er Date() objektet, der lige er blevet oprettet

Til sidst udskifter jeg url'en 'http://server/nissan.htm' med 'http://server/default.htm'


========= main.htm ===========

Når siden 'default.htm' loades, vil 'main.htm' som standard stå i 'main' framen.
Derfor undersøges det om der er en cookie med navnet 'subpage':
  -- var sp = readCookie('subpage')
  -- if(sp == null)
  hvis der returneres 'null' fra funktionen readCookie(), er der ikke sat en cookie med det pågældende navn.

Cookien slettes, så brugeren kan komme tilbage til forsiden ('main.htm' i 'main' framen)

Hvis cookien findes, skiftes siden 'main.htm' ud med siden, hvis navn er value'en i cookien 'subpage' - i dette tilfælde 'nissan.htm'
  -- document.location.href = sp;

==============================
Håber det var fyldestgørende

Mvh. mjess
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