20. august 2004 - 14:35Der 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!
Efter ti år i London, Madrid, Paris og Utrecht kommer Sabios AI-fokuserede program af arrangementer om kundeoplevelser, ‘Disrupt’, for første gang til Danmark.
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?)
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.
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.
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 :) )
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!
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>
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...
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.
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]
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 ...
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.
-- 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>
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
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>
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
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 !-)
ø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)
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>
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>
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.