webForumDet fria alternativet

script för att rätt sida öppnas i iframen?

JavaScript

11 svar · 427 visningar · startad av swedishnina

Medlem sedan apr. 200442 inlägg
Frågan#1

Hejsan!

Jag skulle vilja ha ett script som ser till att ingen av mina sidor öppnas utanför min iframe. Jag läste om det på http://www.aspsidan.nu/kursRead.asp?kid=270 men helt ärligt så förstod jag inte. :(

Säg att jag har sidan index.asp med iframen "iframe" som innehåller sidan main.asp. Hur gör jag för att main.asp aldrig skall öppnas för sig själv utan i "iframe"?

Jag kan inte asp, men tyckte att det verkade som att man borde kunna klippa och klistra litegrand och få det att fungera precis som med enkla javascript. Har jag fel?

Hjälp uppskattas!

Medlem sedan feb. 20011 198 inlägg
#2

kollar om sidan main.asp har en parent som heter rätt eller så kan du bara jämföra med .

typ

if (parent.name != "indexsidan")
{
top.location.href="index.asp"
}
Medlem sedan apr. 200442 inlägg
#3

yohpops skrev:

kollar om sidan main.asp har en parent som heter rätt eller så kan du bara jämföra med .

typ

if (parent.name != "indexsidan")
{
top.location.href="index.asp"
}

:q :q :q Jag förstod ingenting av det där. Betänk att mina kunskaper i "programmering" sträcker sig till html och css...

Ett försök till?

Medlem sedan apr. 2004778 inlägg
#4

Det som yohpops skrev är ett Javascript. Lägg det i innaför sidans HEAD taggar

<script language="javascript">
 if (parent.name != "frmMain" {
   top.location.href="index.asp"
 }
</script>

Du måste göra lite ändringar i det för att det ska passa dig.

1. parent.name kollar om sidan du är på har en "förälder", dvs ligger i en frame. Döp om "frmMain" till namnet på den frame som din main.asp ligger i

2. om sidan inte ligger i en frame så kommer koden att utföra det som står innanför {}

3. top.location.href används för att byta sida "högst upp" i webbläsaren. T.ex. så kan man använda detta för att hoppa ut ur en frame. Att man använder det här är ifall din main.asp har öppnats i någon annans frameset och framenamnet då inte överensstämmer med ditt.

4. "index.asp" byter du ut till namet på den fil som innehåller ditt frameset som main.asp skall ligga i.

Medlem sedan dec. 200012 464 inlägg
#5

Flyttas från ASP

Medlem sedan apr. 200442 inlägg
#6

LarsG skrev:

Flyttas från ASP

... men ... vad jag förstått så är skillnaden mellan denna funktionen i asp och javascript att i javascript så kan man bara skickas tillbaka till index-sidan, men då öppnas den vanliga sidan i ramen, medan i asp så kan man se till att det är just den sidan som besökaren var på som öppnas i huvudramen. Det var därför jag var intresserad speciellt av asp-lösningen.

ex. http://www.exhalemag.com/prenumeration.htm
- här skickas man med ett javascript till huvudsidan, men man blir av med den sidan där man var.

Har jag missuppfattat det, eller?

Medlem sedan apr. 2004778 inlägg
#7

Om ditt frameset ligger i en asp-sida kan du skicka med en variabel som innehåller sidan du vill visa i ditt frameset.

<script language="javascript">
 if (parent.name != "frmMain" {
   top.location.href="frames.asp?mainpage=main.asp"
 }
</script>

I koden ovan så skickas man till sidan frames.asp som är ett frameset. I "innehållsframen" kan man då skriva <%=Request("mainpage")%> så visas den sida man angett i sidan man kommer från, dvs. main.asp.
Du måste alltså skicka med namnet på den sida du vill visa. Sen lägger du in en koll så att ditt frameset visar index-sidan om variabeln inte skickats med.

Medlem sedan okt. 20001 285 inlägg
#8

noterar att du/ni har glömt en parantes i erat exempel :)

<script language="javascript">
 if (parent.name != "achtung") {
   top.location.href="index.php"
 }
</script>

Jag provade detta..

<script language="javascript">
if (top.frames.length == 0) {
   top.location.href="../index.php"
}
</script>

Det går ganska bra att se till så man kommer till ett frameset, men att just den sidan laddas i rätt frame och hur kan man se till så den sidan laddas i " mitt " frameset & inte i någon annans ?

document.domain ? nåt ?

Medlem sedan apr. 2004778 inlägg
#9

Om ett frameset skall ladda innehållet i en frame dynamiskt så måste man skicka med en variabel som berättar vad det ska ladda för innehåll. Se mitt exempel.

Om man ska kolla om det är "mitt" frameset så använder du parent.name som nämns ovan. OBS! Det finns alltid en risk att "andras" frameset använder samma namn så man kan ju ta något ogissbart.

Medlem sedan okt. 20001 285 inlägg
#10

tänkte om det fanns nåt magiskt trick för att slippa skicka med en GET variabel

ang frameset så kan man ju skapa ett frameset på sin egen dator och inkludera sidor .. är det överkurs att söka en lösning så request framesetet måste ligga på server " abc.com " ?

Medlem sedan apr. 200442 inlägg
#11

Det här gick inte så bra...

http://www.swedishnina.com/h-mobil.asp
Tänkte ju då att h-mobil.asp skulle öppnas i h-index.asp
(http://www.swedishnina.com/h-index.asp)
Det är bara mina html-sidor som jag har döpt om och klippt in koden i, men det borde väl gå bra?

En undran. Måste alla sidorna vara asp-sidor för att detta skall funka. Vad bör jag ändra mer? Säkert gjort något dumt fel... Ja, ni ser ju.

Medlem sedan apr. 200442 inlägg
#12

http://dinhalsa.com/dhartiklar/dhart_2003_02/dh03_2_rynkor_bort/dh03_2_rynkor.html

Här har de nått sånt, fast det är ju inte så bra att en sida flimmrar fram först, innan bytet... här skickar de html-sidan, i alla fall. (hopp om att behålla filändelsen tändes)

272 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
142 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)