webForumDet fria alternativet

document.referrer && top.location

JavaScript

7 svar · 224 visningar · startad av joppedi

Medlem sedan jan. 200032 inlägg
Frågan#1

Hej
Ursprungsläge:
Jag har ett fiffigt script som tvingar in en sida i ett frameset om sidan skulle hamna
'top' i webbläsarfönstret:

if (top.location==self.location) {
	top.location="http://www.sajten.se/framesetet.htm"+"?"+escape(top.location.href);
	}
//I framesetet ritas ramarna upp med bla den referrerande sidans sträng som en src

Problem:
Nu vill jag kunna länka till undersidan (från en el fler sidor) och lägga den 'top'
i ett popup-fönster UTAN att den tvingas in i framesetet!

Test:
Jag har testat varianter med 'document.referrer' men inte hittat rätt.
Jag önskar tala om för sidan att "om du öppnas 'top' och det INTE är link.htm som
länkat till dig så ska du verkställa 'top.location="http://www...etc" '. I annan
fall ska du strunta i detta script o öppna dig där du är tillsagd. Basta!"
Tex:

var SpeciellLinkSida = ("link.htm"||"annan_link.htm"); 
if ((top.location==self.location) && (document.referrer!=SpeciellLinkSida)) {
	etc

Resultat:
Det struntar i scriptet:(

Bättre lösning emottages med tacksamhet!

------------------
Joppe

Medlem sedan juli 2000836 inlägg
#2

Hej!

Jag skulle kollat öppnarsidan med någon av följande:

window.opener.name //Framens namn i ett frameset.
window.opener.location //Öppnarens hela URL.
window.opener.document.title //Öppnarens titel.

/ J

Medlem sedan jan. 200032 inlägg
#3

Johnsen,
men vad blir skillnaden(window.opener.location eller document.referrer)? "url:en som öppnade detta fönster" eller "url:en som tog besökaren hit" ?
Det är väl snarare min bristande javascriptlogik som får scriptet att haverera... Eller?
(Jag har testat window.opener.location med samma misslyckande)

------------------
Joppe

Medlem sedan juli 2000836 inlägg
#4

Skillnaden är den du sa.
Jag har själv haft problem att få referrer att funka nån' gång, så jag förmodade att det var det som var ditt problem och gav bara några alternativ.

Är det logiken det brister i, får du väl kolla de värden du skall jämföra så vet du hur strängen skall se ut.

if(top.location==self.location){
alert(document.referrer)
alert(window.opener.document.title)
alert(window.opener.location)
alert(window.opener.name)
}
Medlem sedan jan. 200032 inlägg
#5

Okey, jag provar o återkommer. Tack så länge Johnsen!

------------------
Joppe

Medlem sedan jan. 200032 inlägg
#6

Det var som faan... du hade rätt Johnsen!
Kolla test på http://www.oskg.nu/testframeset.htm
Funkar i alla fall på Win med MSIE 5.5 och NS 4.7 .

Sålunda: document.referrer tillhör inte de grundläggande byggklotsarna. Mycket märkligt!

På testsidan ligger utkommenterat rester av min felsökning som gav detta resultat:
document.write(document.referrer); // inget skrevs ut!
document.write(window.opener.document.title);
//OK
document.write(window.opener.location);
//'http://www.oskg.nu/testmain.htm#' skrevs ut dvs MED href strängen med javascriptet - därför funkade inte min första test med opener.location !
document.write(window.opener.name);
//OK

Tack Johnsen för att du stod på dig med att ge mig förslag på lösningar!
Tror jag ägnat 3 timmar åt denna upptäckt.... document.referrer är bara att glömma!
Eller?

------------------
Joppe

Medlem sedan jan. 200032 inlägg
#7

Nä, document.referrer är inte att glömma! (ska sluta vara så rask i slutsatserna...)
document.referrer funkar bra INOM huvudfönstret, medan window.opener.name funkar då länken öppnas i NYTT fönster.
Men scriptet måste funka i båda fallen - väljer jag det ena så får jag error att objektet är null/saknas.
Hur kombinerar jag objekten? Något med != null?

------------------
Joppe

Medlem sedan juli 2000836 inlägg
#8

Jag kan ju säga att jag inte riktigt är med, men om du kan ju fråga om objektet finns: if(window.opener.name){...}else{...}.

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