webForumDet fria alternativet

Kolla om sidan laddats i en frame, isf. ladda om överst, men behålla querystring

JavaScript

2 svar · 200 visningar · startad av Patrik81

Medlem sedan okt. 2001538 inlägg
Frågan#1

Hejsan, jag har ett problem, det står väl ganska bra beskrivet i rubriken, och tro mig, jag har sökt på wF, och den koden jag av dessa sökningar lyckats skrapa ihop gör nästan allt det jag söker, problemet är att den inte nöjer sig med att ha hamnat "top" utan fortsätter att ladda om, till samma adress...

Smått irriterande. Någon som kan förklara varför min kod beter sig så? Och helst rätta till den med :D

function checkParent()
{
    if(top.location.href!="403.php"){

        var url = location.href;
        var queryString = "";

        if (url.indexOf("?") != -1){
            queryString = url.substr(url.indexOf("?"));
        }

    top.location.href = "403.php" + queryString;

    } else {

        return false;

    }
}
window.onload = function()
{
    checkParent();
}

När sidan laddas så skall den ju köra kontrollen, och om sidan är fast i en frame, så skall den redirecta ur den, lägga sig överst, med querystringen (dett funkar) men när den väl hamnat överst så kommer den ju ladda om, och borde ju då känna att den är top, och inte försöka redirecta, och borde därför sluta ladda om, och trigga onload, men den laddar om gång på gång.

Typ hjälp.

Tack på förhand
MVH Patrik

Medlem sedan sep. 20021 655 inlägg
#2

När du har en querystring efter filnamnet kommer window.location.href inte längre att bara innehålla filnamnet, utan även din querystring (inte bara "403.php" utan "403.php?xxx").

Dessutom är window.location.href hela sökvägen, inklusive http://www.aaaaa.bb/....

Gör hellre din koll så här:

function checkParent()
{
    if(top!=self){
        top.location.href = window.location.href;
    }
}

Men förstår jag inte vad meningen med att kolla din querystring är. Är det meningen att "403.php?xxx" ska bli "403.phpxxx"?

Medlem sedan okt. 2001538 inlägg
#3

Tack för det visade intresset, jag skall kolla din lösning litet senare ikväll, när jag hamnat framför rätt dator igen.

Hela meningen med scriptet var helt enkelt att behålla querystringen även efter redirecten, och skall sanningen fram så klippte och klistrade jag bara hej vilt bland kod som jag funnit genom sökningar här på wF. Men det verkade fungera som jag ville, för php snappar upp variablerna från QS, men kontrollen var helt enkelt till för att dels se till att sidan hamnar utanför alla ramar, och att querystringen fortfarande var med.

Jag återkommer så fort jag testat din kod.

r/ Och det funkade så klockrent så det är inte sant, återigen ett stort tack!

Återigen tack =)
MVH Patrik

261 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
131 ms — ändringar (db)