Avatar billede ofirpeter Nybegynder
27. august 2004 - 17:58 Der er 11 kommentarer og
1 løsning

Find side, som vises i iframe.

Jeg har et lidt kringlet problem.
Jeg har en index side som indeholder 2 iframes.

<iframe src="menu.php" navn="menu" frameborder="0"></iframe>
<iframe src="indhold.php" navn="content" frameborder="0"></iframe>

Jeg skal nu bruge et script som kan gå ind og "læse" hvilken side der er aktiv i framen "content".

Dvs. Hvis jeg f.eks. trykker på en anden side i menuen, så skal scriptet vide hvilken side der nu befinder sig i "content".

Kan dette lade sig gøre?
Avatar billede mik789 Nybegynder
27. august 2004 - 21:45 #1
du kan vel altid bruge window.content.document.location - "location" er URL'en af det dokument der er loaded i content. F.eks.:

if(window.content.document.location=='indhold.php') [kode der skal udføres}
Avatar billede ofirpeter Nybegynder
28. august 2004 - 00:27 #2
Det er her jeg vil hen af! Kan jeg udskrive location i en PHP variabel?
Avatar billede mik789 Nybegynder
28. august 2004 - 07:49 #3
for at php skal få adgang til variabler der er etableret i JavaScript SKAL du over serveren på en eller anden måde. JavaScript afvikles i din browser hjemme på din computer, php afvikles ude på serveren. Du kan få php og JavaScript til at kommunikere sammen på flere måder:

1) du kan sende JavaScript variabler over serveren via querystrengen i sidens URL. F.eks.:
<script type="text/javascript">
if(window.content.document.location=='indhold.php') {
  window.location.replace(self.location.href+'?loc=indhold');
}
</script>
Når siden så replacer sig selv kan du:
<?php
if ($loc=="indhold.php") [kode]
?> idet php automatisk gemmer de variabler (og deres værder) der er sendt i querystrengen.
Du kan også sende dem via en <form>, evt. som hidden <input>.
Uanset hvordan du sender dem, kan du bruge dem i php, f.eks. i en session.
Avatar billede mik789 Nybegynder
28. august 2004 - 07:50 #4
og mht. at udskrive, kan du jo bare (når du har været turen over via querystreng eller form): <?php echo $loc; ?>
Avatar billede mik789 Nybegynder
28. august 2004 - 08:21 #5
Hov, der er lige et par fejl oven for:
1) location er hele URLen, altså ikke kun "indhold.php" men "http://www.ofirpeter.dk/indhold.php" (hvis det er sådan den er), og hvis vi skal holde den op med en tekststreng, skal vi egentlig bruge location.href. Altså
if(window.content.document.location.href=='http://www.ofirpeter.dk/indhold.php') [kode der skal udføres}

Jeg kan ikke lige huske om der er en location property der svarer til navnet alene, se evt. referencerne på http://devedge.netscape.com/central/javascript/

Vi kunne også have gjort sådan:
<script type="text/javascript">
if(window.content.document.location.href=='http://www.ofirpeter.dk/indhold.php') {
  var loc = window.content.document.location.href;
  window.location.replace(self.location.href+'?loc='+loc);
}
</script>
Det ville så replace din side med flg. type URL: http://www.ofirpeter.index.php?loc=http://www.ofirpeter.dk/indhold.php
Og så kunne du: <?php echo $loc; ?> og får udskrevet værdien af loc ("http://www.ofirpeter.dk/indhold.php") til skærmen.

Men du kan også, hvis du vil undgå querystrenge med hele URL'er inde i en anden URL, i stedet gøre som oven for, nemlig bruge "nicknames". Altså:
if(window.content.document.location.href=='http://www.ofirpeter.dk/indhold.php') {
  var loc = 'indhold';
  window.location.replace(self.location.href+'?loc='+loc);
}

men så vil php jo altså kun skrive "indhold" når du skriver variablen ud med php. Så¨det kommer an på om du har brug for hele url'en eller bare et "nickname" du  så kan arbejde videre med. F.eks. <?php if($loc=="indhold") [kode] ?>
Avatar billede mik789 Nybegynder
28. august 2004 - 08:23 #6
og hvis helt du vil undgå at gå over URL'en kan du som sagt bruge hidden <input> i <form>s
Avatar billede mik789 Nybegynder
28. august 2004 - 08:28 #7
Og endnu en lille t(h)astefejl. Denne linje:
Det ville så replace din side med flg. type URL: http://www.ofirpeter.index.php?loc=http://www.ofirpeter.dk/indhold.php

skal selvfølgelig være:

Det ville så replace din side med flg. type URL: http://www.ofirpeter.dk/index.php?loc=http://www.ofirpeter.dk/indhold.php
Avatar billede mik789 Nybegynder
28. august 2004 - 08:36 #8
og når jeg nu selv sidder og kigger i http://devedge.netscape.com/library/manuals/2000/javascript/1.3/reference/location.html, ser det også ud til at vi skal udelade "document" property'en fra alt i ovenstående
Avatar billede mik789 Nybegynder
28. august 2004 - 08:50 #9
du kan bruge location.pathname som ville give: "/indhold.php" hvis indhold.php ligger i roden, men "/[mappe]/[mappe]/indhold.php" hvis den ligger to niveauer nede, dvs. det der kommer efter http://www.ofirpeter.dk og før hash ("#") og querystren ("?")
Avatar billede mik789 Nybegynder
28. august 2004 - 08:57 #10
så prøv:
<script type="text/javascript">
if(window.content.location.pathname=='/inhold.php'){
  var loc = window.content.location.pathname;
  window.location.replace(self.location.href+'?loc='+loc);
}
</script>

<?php
if(isset($loc)) echo $loc;
?>

og så må vi se...
(vi er vist begge i skole her ;-)
Avatar billede ofirpeter Nybegynder
15. september 2004 - 22:19 #11
Hej igen.

Er glad for din ihærdige indsats, selvom jeg ikke lige har været tilstede den sidste måned. Jeg har nu prøvet din løsning, men det virker ikke. Har også svært ved at se hvordan det script skulle se hvilken side der ligger i framen?
Avatar billede ofirpeter Nybegynder
30. september 2004 - 12:14 #12
Da der er gået over en måned, lukker jeg,
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