webForumDet fria alternativet

document.referrer && top.location

7 svar · 222 visningar · startad av joppedi

joppediMedlem sedan jan. 200032 inlägg
#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

JohnsenMedlem sedan juli 2000718 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

joppediMedlem 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

JohnsenMedlem sedan juli 2000718 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)
}
joppediMedlem sedan jan. 200032 inlägg
#5

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

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

joppediMedlem 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

joppediMedlem 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

JohnsenMedlem sedan juli 2000718 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{...}.

Genererad på 368 ms · cache AV · v20260730165559-full.f96bc7eb