joppediMedlem sedan jan. 200032 inlägg
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
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
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
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
Okey, jag provar o återkommer. Tack så länge Johnsen!
------------------
Joppe
joppediMedlem sedan jan. 200032 inlägg
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
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
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{...}.