Avatar billede learner Praktikant
20. august 2004 - 14:35 Der er 41 kommentarer og
2 løsninger

Tjek om siden er åbnet i iframe?

Hej, jeg har nogle undersider, som ikke må åbnes alene. kun i iframe med navnet iframe. Hvis de åbnes udenfor iframe'en skal de redirect'e med en header til forsiden... Jeg har forsøgt at lave det med session, men kan ik rigtig få det til at virke optimalt. Jeg ville høre om der er en måde at "spørge" om den er i en iframe og om navnet er på iframe'en er iframe. Er det muligt? Eller har du en anden smart måde at gøre det på?

Det er mest hvis feks en søgemaskine henviser til en af mine underside... Så skal den selv vise videre!
Avatar billede dennismp Nybegynder
20. august 2004 - 14:55 #1
Jeg tror den eneste måde du kan finde ud af om en side er i en iframe er vha javascript (eller andet clientside).

Måske kan du bruge referer og se hvor folk kommer fra.. Hvis de kommer fra et andet domæne end dit eget, så kan du lave tjek.. Men det er ikke alle der sender den med, så det vil ikke virke i alle tilfælde.

Sessions, som du selv er inde på, er også muligt - men det er stadig en halv løsning. (jeg gætter mig til at din side, der har iframe-koden, sætter en værdi i session, og indholdet af iframen tjekker om denne værdi findes - og redirecter hvis den ikke gør?)

Bedste løsning; lad være med at bruge frames :-)
Avatar billede jakoba Nybegynder
20. august 2004 - 14:55 #2
det gør du i javascript. og først når siden er igang med at blive hentet:
    <script>
    if ( window.name == "navnetPaaDinIframe" ) {
        // jeg er hvor jeg skal være
    } else {
        // jeg bliver hentet ind i et nyt vindue eller en anden ramme
    }

Du kan tildels texte på serveren med $HTTP_REFERER, når din iframe hentes som en del af den side den ligger i vil $HTTP_REFERER være adressen på den side. Men hvis du ændrer indholdet i din iframe med links vil $HTTP_REFERER være navnet på den side hvor det link står.
Avatar billede jakoba Nybegynder
20. august 2004 - 15:00 #3
Ups, sorry, men vi er da enige :-)
Avatar billede dennismp Nybegynder
20. august 2004 - 15:04 #4
Well, der er nok noget om snakke når han får to (mere eller mindre) ens svar på (næsten) samme tid :-)
Avatar billede learner Praktikant
20. august 2004 - 15:28 #5
Er der virkelig slet ikke nogen "god" løsning? :-)

Jeg har lige forsøgt med at lave noget med cookie, men det ender ca samme sted som session.... let men ikke optimalt :-(

Kan jeg ikke lave det således at alle søgerobotterne og søgesiderne kun henviser til index(forsiden) og så kan jeg kombinere det med en cookie som bliver sat på hovedsiden med levetid på feks 12 timer. Dvs hvis brugeren kommer ind på en underside og cookien ikke er sat(eller er udløbet) så vises der videre til index. Tror i ik det er nogenlunde det bedste man kan gøre? Jeg ved godt at den kun videresender første gang :-)
Og så kunne jeg ovenikøbet lave det javascript os... :-)
Så er den vel ved at være der....

Hvordan gør jeg det med søgemaskinerne/søgesiderne? er det ik i en meta metalinie man skriver noget særligt? og skal det indsættes på alle siderne(inkl undersiderne) eller skal meta'linierne kun indsættes i index så

forresten hvad er det nu 12 timer er? er det ik 12*60*60*60 ??

------------

Eller måske har jeg en ide.. hmm.. :
Kan man hente den tekst der står i url'en (der hvor man skriver www.....) ? For så kunne man i mit tilfælde måske tjekke om der står '?' eller ej, - og måske bruge det på en måde.
Avatar billede roenving Novice
20. august 2004 - 15:32 #6
Med javascript kan man, som jakoba og dennismp siger, gøre det relativt problemfrit, du kan jo kigge på min model:

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

Bemærk ændringen i adresselinjen, og se kode/forklaring ved at klikke på teksten nede til venstre !-)
Avatar billede dennismp Nybegynder
20. august 2004 - 15:44 #7
Jeg undgår at bruge frames generelt, fordi det er noget bøvl - og de fleste gange syntes jeg at man godt kan undvære det alligevel. Så en god løsning for mig (og det anbefaler jeg også folk til) er at undgå frames helt.

Hvis jeg ville linke direkte til din side (dybe links - som jo er en herlig ting med nettet) så vil du ødelægge det. Jeg kan så ikke bookmark en bestemt artikel, eller linke til den fra min egen siden - uden at du kaster folk tilbage på forsiden.. Hvor de så skal til at finde det de ville se (så må man håbe på at de gider det..)

Hvis jeg blev tvunget til at lave frames, så ville jeg nok lave et link (tryk her, hvis du ikke kan se en menu.. noget i den stil) som så linkede til samme side, bare sådan at jeg får framen med... og så kombineret med javascript der gør det samme, automatisk.

12 timer er 43.200 (da 24 timer er 86400 - nemt tal at huske :) )
Avatar billede jakoba Nybegynder
20. august 2004 - 15:47 #8
jeg lavede en javascript demo til den slags rammer engang
    http://hjem.get2net.dk/Jakob.Aggernaes/temp/expframe.html

men mestendels følger jeg denni's råd og holder mig fra frames :-)

mvh JakobA
Avatar billede roenving Novice
20. august 2004 - 15:53 #9
-- men som I kan se, kan man sagtens deeplinke til mine undersider ...
Avatar billede learner Praktikant
20. august 2004 - 15:59 #10
Jeg undgår det stort set også frames. men jeg bruger iframen, fordi jeg kan lave scroll midt i siden så. (tjek det evt ud på huggernet.dk) Og det synes jeg passer kanont ind i mit design. Men jeg tror jeg vil følge jeres råd på de næste sider og undgå det totalt.

Men er der andre måder jeg kan lave scroll-funktioner der ligner den jeg har med iframe? kan man feks lave scroll i en tabel(td)?

Men det ser ik ud til at jeg finder en god løsning, så jeg tror bare jeg venter lidt med at lave det.

Kan i ikke smide et svar og så fordeler jeg pointene lidt til hver.
Det var mange gode svar :-) Tak for det!

Og rigtig god weekend
Avatar billede roenving Novice
20. august 2004 - 16:03 #11
Hvis du giver f.eks. en div en fast størrelse og sætter eksempelvis overflow:auto; på, vil du få en scrollbar ..
Avatar billede dennismp Nybegynder
20. august 2004 - 16:08 #12
Jeg har folk til html-arbejde, så det ved jeg ikke.

Håber det kunne bruges - og en god weekend med hyggernet :-)
Avatar billede learner Praktikant
20. august 2004 - 16:12 #13
Roenving skrev:
Hvis du giver f.eks. en div en fast størrelse og sætter eksempelvis overflow:auto; på, vil du få en scrollbar ..
_____________________

Virker det altid, eller er det os javascript? Jeg mener virker det i de fleste browsere og hvis man har slået js fra?
Avatar billede roenving Novice
20. august 2004 - 16:17 #14
Det er css, så det har ikke det fjerneste med javascript at gøre, du kan bare:

<div style="width:300px;height:40px;overflow:auto;">
Denne div har scrollbar ...<br>
fordi der er flere linjer i den,<br>
og højden ikke giver plads til det hele
</div>
Avatar billede learner Praktikant
20. august 2004 - 16:19 #15
kanont, det er jeg gled for at få at vide...
Avatar billede learner Praktikant
20. august 2004 - 16:30 #16
Jeg overvejer at lave sådan at folk der ikke kan klare javascript ikke kan komme ind på siden. Tror i det er mange der vil smutte så? Husk at tage i betragtning at det ik er nørder, men mekanikere med windows og explorer langt de fleste...

Men er det meget dumt af mig?
Avatar billede learner Praktikant
20. august 2004 - 16:31 #17
jeg har forhøjet point, smid flere svar! de bliver fordelt!... :-)
Avatar billede dennismp Nybegynder
20. august 2004 - 16:40 #18
Nej - en eller anden statistik viste at det var de færreste der slår javascript fra. Og de der gør, er normalt "nørder" - som kender teknologien godt nok til at de har taget en holdning.

Jeg tror de fleste ikke nørder ikke ved hvad javascript er - eller syntes det er dumt at slå det fra, hvis det giver problemer. Så jeg tror ikke det er alvorlig fejl du laver.
Avatar billede roenving Novice
20. august 2004 - 16:42 #19
Jeg synes jo, det er dumt at slå javascript fra, og de fleste, som har det, tror jeg er illiterate IT-chefer i større virksomheder, som forveksler javascript og de muligheder den største browser har for at bruge deres private scripting-sprog til at benytte sig af maskinens programmel ...

Det er jo det samme sted, de skal slås fra, men det er jo tåbeligt at fjerne en hel del af ideen i DHTML, fordi man, ved aktivt at sige ja til et skadeligt script, kan aktivere det !-)

--- men det kommer selvfølgelig an på, om du har et krav om, at alle skal kunne se din side ...

Hvis man skal leve af at sælge noget, har man jo nok ikke råd til at miste de tre kunder, som ikke kan bruge siden, hvis man gør den afhængig af javascript, mens man i mange andre sammenhænge kan vælge/prioritere de funktionaliteter man har brug for ...

-- og en klassisk løsning kan være at redirecte folk, som kan bruge javascript, f.eks. ved at bruge en afart af det omdirigeringsscript, som jeg har på mine undersider !o]

-- og velbekomme '-)
Avatar billede roenving Novice
20. august 2004 - 16:47 #20
http://www.thecounter.com/stats/2004/July/javas.php

http://www.w3schools.com/browsers/browsers_stats.asp

Giver lidt et billede af, hvem som har den slags slået til og fra, thecounter er jo en slags 'almindelige' sider/mennesker-tæller, mens w3schools jo er en nørd-side ...
Avatar billede coderdk Praktikant
20. august 2004 - 17:02 #21
Hvad med noget i stil med:

<script type="javascript">
  window.onload = function ()
  {
    if ( window.top.document.title != 'titlen på din øverste side' )
    {
        document.top.document.location.href = '/index.php';
    }
  }
</script>

Det kan dog godt være at du ikke får lov til at redirecte en andens frame/parent window :P
Avatar billede roenving Novice
20. august 2004 - 17:07 #22
>>coderdk

Hvorfor dog vente på, at siden er loadet ?-)

-- og der findes selvfølgelig ikke et element, som hedder document.top medmindre man har indsat en frame med det navn ...

-- og tak for point ;~}
Avatar billede learner Praktikant
20. august 2004 - 18:01 #23
nogen af jer der tilfældigvis har et script, der afviser/giver folk som ikke kan handle javascript en besked.

Det ville være rart!
Avatar billede coderdk Praktikant
20. august 2004 - 21:13 #24
roenvig, for at konformere med standarderne. Nej, du har ret, der findes ikke et element der hedder document.top, men nu skrev jeg også window.top - som returnerer det "øverste" document.
Avatar billede roenving Novice
21. august 2004 - 01:03 #25
>>coderdk

-- bortset fra tavetossen inde i if-sætningen ...


-- og et javascript, som giver folk en besked, hvis de ikke forstår java script:

<script type="text/javascript">
  document.write("<!--">);
</script>
<span style="font-size:x-large;font-weight:bold;color:red;">
  Din browser er indstillet til ikke at kunne bruge internettet fuldt ud,<br>
  da javascript ikke er muligt.<br>
  Skubber du også din bil henad motorvejen ?-)
</span>
<script type="text/javascript">
  document.write("-->
</script>
Avatar billede learner Praktikant
21. august 2004 - 13:13 #26
total griner ;-)
Avatar billede jakoba Nybegynder
21. august 2004 - 13:17 #27
>> roenving
  Tag et kik på <NOSCRIPT> ... </NOSCRIPT>, det er en lidt nemmere måde.
Avatar billede learner Praktikant
23. august 2004 - 10:30 #28
>> jakoba

Du skriver <NOSCRIPT>... men så vidt jeg lige kunne læse på en side om html, så virker den kun hvis brugeren selv har slået javascript fra... Men er det så ik mere "sikkert" eller "rigtigt" at bruge roenving's metode beskrevet lidt længere oppe? (med document.write("<!--">); osv...) Den tager vel alle der ikke kan læse scripts.. og så sætte en meta redirect ting indeni som henviser til en kan_ikke_læse_scripts_side.html

Michael
Avatar billede roenving Novice
23. august 2004 - 15:36 #29
-- og vi må hellere få rettet tavetossen:

  document.write("<!--");
Avatar billede coderdk Praktikant
23. august 2004 - 15:39 #30
og document.write("-->");
Avatar billede roenving Novice
23. august 2004 - 15:43 #31
>>coderdk

Hvis du skriver sådan, giver det fejl på siden, fordi den forsøger at skrive noget udenfor html-kommentaren, så det lagte er det rigtige !-)
Avatar billede coderdk Praktikant
23. august 2004 - 15:54 #32
roenving>> Hmm, begge dele giver syntax error for mig i Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.2) Gecko/20040819 Firefox/0.9.1+ (MOOX M3)

Jeg ville bruge noget i stil med:

<span id="jsting" style="font-size:x-large;font-weight:bold;color:red;">
  Din browser er indstillet til ikke at kunne bruge internettet fuldt ud,<br>
  da javascript ikke er muligt.<br>
  Skubber du også din bil henad motorvejen ?-)
</span>
<script type="text/javascript">
  document.getElementById( "jsting" ).style.display = 'none';
</script>
Avatar billede roenving Novice
23. august 2004 - 16:01 #33
Sådan ville jeg zq nok også vælge at gøre det i dag, men den er med vilje lavet meget bagudkompatibel !-)

-- og denne virker i mine browsere:

Tekst før
<script type="text/javascript">
  document.write("<!"+"--");
</script>
<span style="font-size:x-large;font-weight:bold;color:red;">
  Din browser er indstillet til ikke at kunne bruge internettet fuldt ud,<br>
  da javascript ikke er muligt.<br>
  Skubber du også din bil henad motorvejen ?-)
</span>
<script type="text/javascript">
  document.write("-->
</script>
<br>Tekst efter
Avatar billede coderdk Praktikant
23. august 2004 - 16:11 #34
Yep, så kom den ikke med fejl :) Men lidt spøjst at den godtager at man har en unterminated string ;)
Avatar billede roenving Novice
23. august 2004 - 16:33 #35
Ja, det tog mig også mange forsøg, før jeg endelig accepterede, at det var sådan, det skulle være, for jeg ville også skrive syntaktisk korrekt, men det må man så ikke i dette tilfælde !-)
Avatar billede learner Praktikant
23. august 2004 - 19:11 #36
Herligt... :-)

Kanont af jer, tusind tak!

Jeg tænker umiddelbart bare: Men jeg kan jo ikke lave en redirect deri, kan jeg?

Enten med en <meta redirect ting> eller en <?php header() ?>

For det var sådan set min plan :-) for såkan jeg lave én fejlside som alle siderne kan henvise til...

Er det muligt?

Jeg skal nok kaste nogle point for svarene :-)

Og tak
Avatar billede roenving Novice
24. august 2004 - 00:17 #37
Ikke en php header, men der skulle ikke være noget galt i at placere det i head-sektionen og så f.eks.:

<script type="text/javascript">
  document.write("<!"+"--");
</script>
<meta http-equiv="Refresh" content="0;URL=noJavaScript.html">
<script type="text/javascript">
  document.write("-->
</script>
Avatar billede learner Praktikant
06. september 2004 - 12:31 #38
øhh, jeg ved godt det her spm er dødt, men jeg har lige et tillægsspørgsmål! Håber en vil svare :o)

Nu har jeg lavet en redirect af alle der ikke kan handle Javascript og det írker fint. Men så er det jo jeg tænker: Kan brugeren ikke komme til at dumpe ind på min fejlside(nojavascript.html) via feks en søgemaskine? Og findes der en enkel måde jeg kan løse det problem? Jeg vil så nødig genere brugerne for meget :-)

Jeg tænker på en redirect som sender forlk tilbage til index.php hvis de KAN klare javascript :O)

Håber i forstår :-)
Michael
Avatar billede learner Praktikant
06. september 2004 - 12:57 #39
kan jeg ik bare sætte en:

<script>eval('../index.php')</script>

Den sender vel folk tilbage hvis de kan læse Javascript.. Gør den ik? :-)
Avatar billede learner Praktikant
06. september 2004 - 13:55 #40
<script type="text/javascript">eval(top.location='../index.php');</script> ???
Avatar billede learner Praktikant
06. september 2004 - 14:01 #41
Jeg har indsat dette på alle mine sider:
<script type="text/javascript">document.write("<!"+"--");</script><meta http-equiv="Refresh" content="0;URL=../pages/noscript.php"><script type="text/javascript">document.write("--></script>

Og dette på sider som kun må blive vist i iframe:
session_start();  // vær varsom med at fjerne denne linie, for måske SKAL session startes!
$this_files_name = "../secure/slet-bruger.php"; ?>
<SCRIPT LANGUAGE="JavaScript">if ( window.name != "iframe" ) { eval(top.location='<?php echo $jump_to_url; ?>'); }</SCRIPT>
Avatar billede learner Praktikant
06. september 2004 - 14:03 #42
og det skulle have været:    :-)

Jeg har indsat dette på alle mine sider:
<script type="text/javascript">document.write("<!"+"--");</script><meta http-equiv="Refresh" content="0;URL=../pages/noscript.php"><script type="text/javascript">document.write("--></script>

Og dette på sider som kun må blive vist i iframe:
session_start();
$this_files_name = "../xxx/xxx.xxx"; ?>
<SCRIPT LANGUAGE="JavaScript">if ( window.name != "iframe" ) { eval(top.location='<?php echo $this_files_name; ?>'); }</SCRIPT>
Avatar billede learner Praktikant
06. september 2004 - 14:03 #43
Det ser ud til at virke :O)
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