Avatar billede gurly Praktikant
17. august 2007 - 07:59 Der er 26 kommentarer og
1 løsning

forhindre side køres, hvis den er åbnet forkert

På min forside har jeg et link til en side som åbner i et "popup vindue"  altså uden værktøjs linier, fordi jeg syntes at sidens indhold tager sig bedst ud på denne måde. (en video player)
nu har jeg så fundet ud af, at minst en har lavet et link på nettet, som åbner min video player side i et normal vindue, i stedet for at linke til min forside.
og det iritere mig lidt, har forsøgt at gøre det lidt sværere ved at mit link ti siden ligger i en flash fil, men selv om værktøjslinier er fjernet fra siden, så kan man alligevel se adressen i IE 7 , kan man slet ikke skjule adressen for IE7 ? ? ?
hvis svaret er nej, kan jeg så i stedet gøre et af følgende >
er det muligt at lave noget script på siden, som tjekker om siden er åbnet uden værktøjslinier, og hvis nej, så går ind og blokere siden  ? ? ?
eller kan man ligge noget ind i siden, som tjekker om siden er åbnet fra et link på mit domain, og blokere siden hvis den er åbnet fra et andet domain ?
eller eventuelt noget med en cookies som "samles op" på min forside, og lave popup vinduet så det kun kan køre hvis man har den cookies ?
eller findes der andre muligheder ?
Avatar billede fennec Nybegynder
17. august 2007 - 08:20 #1
Nej, du kan ikke forhindre IE7 (eller nogen anden browser) i at vise adressen.

Men du kan lave et tjek. Via "opener" kaldet, kan du få adgang til den side som har åbnet vinduet. Der kan du tjekke om det din side.
Avatar billede fennec Nybegynder
17. august 2007 - 08:29 #2
Hov... Tænkte du gerne ville se lidt kode:

Bare placer dette på din popup:
<body onload="runCheck()">
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
<!--
function runCheck()
{
    try{
        tmp = opener.location.href
        alert("OK")
    }catch(e){alert("Fejl")}
}
//-->
</SCRIPT>

Javascript er nemlig så smart at det ikke virker cross domæne. Så den fejler på "opener.location.href" hvis det er et andet domæne.
Avatar billede fennec Nybegynder
17. august 2007 - 08:35 #3
Man kan faktisk slå cross domæne JS til, men så laver du bare endnu et tjeck:

    try{
        tmp = opener.location.href
        if(tmp.substring(0,24) != "http://www.ditdomæne.dk/")
            alert("Fejl")
        else
            alert("OK")
    }catch(e){alert("Fejl")}
Avatar billede gurly Praktikant
17. august 2007 - 08:41 #4
syntes da godt at jeg ved at skjule adresselinien, kan skjule adressen i IE6 og FF ?
men jeg vil lige afprøve dit script.

jeg har lavet noget, sådan at hvis folk vil have min videoplayer på deres hjemmeside, så kan de indsætte en kode på deres side, så bliver der hentet en html side i en iframe fra min server, iframen/html siden indeholder så en SWF som har et link der åbner min videoplayer i popup vindue.

vil du mene at dit script også virker i dette tilfælde ? for selv om iframen er indsat i en side på et andet domain, så ligger både iframe og swf jo på mit domain
tror du det vil virke ?
Avatar billede gurly Praktikant
17. august 2007 - 08:43 #5
du syntes altså jeg skal droppe øverste script, og så prøve med det nedderste i stedet ?
Avatar billede fennec Nybegynder
17. august 2007 - 08:46 #6
Det sidste har fuld tjek, ja.

Du skal bare rette til dit domæne, også tælle hvor mange tegn der er i stien, også rette 24 til det tal.
Avatar billede fennec Nybegynder
17. august 2007 - 08:47 #7
Der er dog ikke mange som vil slå "tilad cross domæne JS" til i deres browser. Det er en direkte vej til hackere og andet dårligskab.
Avatar billede gurly Praktikant
17. august 2007 - 08:52 #8
hvad med > Kommentar: gurly 17/08-2007 08:41:08  ?

uha, nu må jeg finde ud af hvordan jeg får afprøvet det, fordi jeg sidder på samme ip adresse som min server, og min router suportere ikke "nat loop back"  så jeg kan ikke tilgå mit ejet domain
Avatar billede fennec Nybegynder
17. august 2007 - 09:01 #9
I tilfældet med iFramen virker det ikke. Tror heller ikke det er muligt at lave en kode som godtager visse domæner og ikke andre, uden at have noget serverside script ind over med en DB som har alle godkendte domæner.
Avatar billede gurly Praktikant
17. august 2007 - 09:06 #10
jeg har afprøvet det øverste script, fordi jeg vurdere at det er godt nok, fordi selv om ham der vil linke til min side har slået crossdomain til, så har hans gæster det jo ikke.

efter at have sat scriptet ind på siden, og så tjekket siden fra en anden pc på mit lokal netværk, når siden åbner skriver den "fejl" klikker jeg så ok så køre siden ?
Avatar billede gurly Praktikant
17. august 2007 - 09:24 #11
hmm, i øverste scrip har du skrevet >

        alert("OK")
    }catch(e){alert("Fejl")}

mens i nederste script >

            alert("Fejl")
        else
            alert("OK")
    }catch(e){alert("Fejl")}

er det korrekt ?
Avatar billede fennec Nybegynder
17. august 2007 - 09:35 #12
Ja. Prøv at se koden fra første:
    try{
        tmp = opener.location.href
        alert("OK")
    }catch(e){alert("Fejl")}

Også den næste:
    try{
        tmp = opener.location.href
        if(tmp.substring(0,24) != "http://www.ditdomæne.dk/")
            alert("Fejl")
        else
            alert("OK")
    }catch(e){alert("Fejl")}

Det eneste jeg har gjort er at smide en if/else sætning ind, som tjekker domænet.
Avatar billede fennec Nybegynder
17. august 2007 - 09:37 #13
For at bruge koden, fjerner du bare alle alert("OK"). Alle alert("false") andre du til en location.href = 'IngenAdgang.htm'
Avatar billede fennec Nybegynder
17. august 2007 - 09:38 #14
F.eks sådan her i den fulde udgave:

    try{
        tmp = opener.location.href
        if(tmp.substring(0,24) != "http://www.ditdomæne.dk/")
            location.href = 'ingenAdgang.htm'
    }catch(e){location.href = 'ingenAdgang.htm'}
Avatar billede gurly Praktikant
17. august 2007 - 09:58 #15
jeg vil gerne bruge det øverste script, har indsat det i siden.
så har jeg lavet en side mere med et link til den anden side.
selv om jeg sidder på lokal ip, så virker det.
men > åbner jeg siden som har et link til siden, klikker på linket så siden åbner, så kommer meddelelsen "ok" kan man undgå denne meddelse ?
hvis jeg tilgår siden direkte, så kommer meddelelsen "fejl"  men klikker man så på "ok"  (eller lukker det lille vindue)  så køre siden jo alligevel videre, kan man gøre noget så siden ikke køre ?
eventuelt viderestille siden til en anden side ?
Avatar billede gurly Praktikant
17. august 2007 - 09:59 #16
nu havde jeg ikke set du havde skrevet, kigger lige på det
Avatar billede fennec Nybegynder
17. august 2007 - 10:05 #17
Hvis du bruger den første er det bare:

    try{
        tmp = opener.location.href
    }catch(e){location.href = 'ingenAdgang.htm'}
Avatar billede gurly Praktikant
17. august 2007 - 10:14 #18
det var også hvad jeg havde gættet på, har afprøvet følgende >

<body onload="runCheck()">
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
<!--
function runCheck()
{
    try{
        tmp = opener.location.href
    }catch(e){location.href = 'ingenAdgang.htm'}
}
//-->
</SCRIPT>

og så lavet en side med navnet ingenAdgang.htm

men nu sker der slet ingen ting, selv om jeg tilgår siden direkte, så kommer der ingen besked eller viderestilling, siden køre bare normalt ?
Avatar billede gurly Praktikant
17. august 2007 - 10:22 #19
jo jo, det virker c",)

vil bare håbe det også virker, når linket ligger i en swf, men det gør det vel ?

men hvis så swf´en ligger i en htm, og denne htm så bliver brugt som iframe på et fremmed domain, så mener du ikke at det virker.
er det fordi den så tager tmp = opener.location.href fra det fremmede domain, i stedet for at tage det fra iframen ?
Avatar billede gurly Praktikant
17. august 2007 - 10:27 #20
jeg mener opener.location er vel adressen på iframen, eller er det fra det fræmmede domain ?
Avatar billede gurly Praktikant
17. august 2007 - 10:39 #21
jo det virker også i en iframe, den må tage opener.location fra iframen.
takker menge gange
ligger du et svar  c",)
Avatar billede fennec Nybegynder
17. august 2007 - 10:49 #22
.o) <-- One Eyed Jack
Avatar billede gurly Praktikant
17. august 2007 - 11:24 #23
Du kunne vel ikke lige afprøve det ?
http://www.aelling.lir.dk/public/TV-til-hjemmeside.htm
eventuelt lige prøve om det virker i den iframe du kan kopiere fra siden
jeg kan godt stille det op i et nyt spørgsmål hvis det er ?
Avatar billede fennec Nybegynder
17. august 2007 - 11:42 #24
Ser ud til at virke. Jeg ryger i hvert fald ind på ingenAdgang.htm:

Du har forsøgt at åbne vores TV Player fra et "uautoiseret link"
Det er kun muligt at åbne TV Playeren direkte fra vores hjemmeside
eller fra en hjemmeside der har tilladelse til at linke til TV Playeren

Klik her for at gå til vores side, og se online tv

Hvis du er webmaster og gerne vil linke til vores tv player så skal du kigge ind på siden TV til hjemmeside
Avatar billede gurly Praktikant
17. august 2007 - 11:59 #25
men kan du indsætte html koden, og så åbne siden med den indsatte kode, sådan at den loader iframen med swf, og så klikke på swf og så se tv ?
Avatar billede fennec Nybegynder
17. august 2007 - 12:42 #26
je, det kan jeg godt.
Avatar billede gurly Praktikant
17. august 2007 - 13:09 #27
Takker mange gange  c",)
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