Avatar billede tallens Nybegynder
05. maj 2003 - 09:49 Der er 47 kommentarer

Iframe, opdatere, popup vindue

Hej folkens

Jeg har et mindre problem som jeg ikke synes at kunne få til at virke. og der kan være en logisk forklaring og der kan også være at det er mig som laver ged i den.

jeg har forsøgt at lede efter en løsning her på eksperten, men jeg har pt ikke kunne finde noget som virker.


mit problem er at jeg har et <frameset> hvor der er menu [som hedder, "FrameMenu"] og et indholds vindue [som hedder, "FrameMain"]. (simple opbygning)

i mit indholds vindue har jeg på nogen sider som bruger iframes, og det virker jo også ganske fint.
mit problem opstår imidlertid når jeg i min iframe [som hedder, "Iframe_window"] som åbner et popup vindue. ved nedlukning af popup, skal "Iframe_window" opdateres (og ikke andet)

Hidtil har jeg ikke engang kunne få den til at opdatere, lige meget hvilken løsning jeg har fundet her på eksperten og i mine bøger. så derfor søger jeg nu jeres hjælp for at finde en løsning. (det haster lidt)

Jeg har på fornemmelsen at den ikke vil opdatere Iframen fordi at den er inde i en frame i forvejen, men jeg er sikker på at der er en løsning.

På forhånd tak.
Avatar billede =maddog= Nybegynder
05. maj 2003 - 09:54 #1
opener.reload();
opener er den frame der åbnede popupen
Avatar billede tallens Nybegynder
05. maj 2003 - 10:51 #2
hmm det virker bare ikke, den gør ingen ting, jeg har prøvet den og den vil bare ikke...

men det var forsøget værd.
Avatar billede grunken Nybegynder
05. maj 2003 - 12:35 #3
Tallens hvis vi skal hjælpe 100% er du nok nødt til at ligge et link, så vi kan se om der er andre ting galt

Men jeg mener at opener er et vindue (men har sikkert ikke ret)

prøv:

self.opener.document.frames['Iframe_window'].reload(true);
Avatar billede grunken Nybegynder
05. maj 2003 - 12:38 #4
ligger det i body'n i din popup ?

altså sådan <body onunload="self.opener.reload(true);">
Avatar billede roenving Novice
05. maj 2003 - 12:40 #5
opener.getElementById("Iframe_window").reload()

skulle iflg. bibelen være den korrekte metode

hth
jes
Avatar billede tallens Nybegynder
05. maj 2003 - 13:35 #6
Jeg ville gerne kunne smide et link, men det ligger internet på et intranet, så den del er lidt besværlig..

jeg kan forsøge at forklare strukturen:
(håber det er overskueligt)

-----------------------------------------
Hoved side (Frameset)
.|
.|- Menuen (FrameMenu)
.|   
.|- Tekst indhold (FrameMain)
.....|- Tabeller med Iframe (Iframe_window)
........|-: Popup

Jeg kan fra menuen lave target på Iframen, og jeg kan også fra [FrameMain] lave target på Iframen, men så snart jeg laver en popup.

Som åbner via en java function.
<a href="#" onClick="window.open('file_edit.asp?idstring=<%= DBQ_data("id") %>', 'Edit_window', 'width=300,height=270'); return false;">LINK</A>

den åbner et vindue, som har informationerne man kan ændre, når jeg trykker på Update skulle den gerne kunne lukke vinduet og opdatere hoved vinduet (i dette tilfælde <iframe> )
-----------------------------------------

Men jeg har prøvet at lave <Script> tags omkring, smide dem i onLoad, OnUnload, sågar, i Onblur bare for at se om der overhovedet sketet noget, men intet af det virkede, jeg prøvede også jeres forslag, forslag som jeg selv synes ser logiske nok ud til at ville kunne virke, og ja jf. biblen så ville det være rigtig nok, men det virker bare stadig ikke.

så enten så laver jeg et eller andet forkert eller også prøver jeg på noget man ikke kan, men jeg kan bare ikke lige sætte fingeren på hvad huuulen det skulle være..
Avatar billede -mundi- Nybegynder
05. maj 2003 - 13:37 #7
prøv at åbne dit vindue med status baren slået til, hvis du har lavet et almindeligt popup vindue uden status baren kan du ikke se eventuelle javascript fejl .
Avatar billede roenving Novice
05. maj 2003 - 13:40 #8
-- og jeg havde selvfølgelig lige glemt:

opener.document.getElementById("Iframe_window").reload()
Avatar billede grunken Nybegynder
05. maj 2003 - 14:07 #9
prøv lige at lave en test så!

<body onunload="self.opener.close()">
Avatar billede grunken Nybegynder
05. maj 2003 - 14:08 #10
roenving din løsning kræver jo osse lige at <iframen> har fået en ID ;)
Avatar billede tallens Nybegynder
05. maj 2003 - 14:13 #11
Jeg har tilføjet et ID til min iframe:
<iframe src="Iframe_window.asp" width="100%" height="100%" id="Iframe_window" scrolling="yes" marginheight="0" marginwidth="0" vspace="0" name="Iframe_window" frameborder="0"></iframe>
Avatar billede tallens Nybegynder
05. maj 2003 - 14:14 #12
Så den del skulle ikke være helt forkert...

men jeg kan stadig ikke få den til at gøre noget som helst.. det er efterhånden så mystisk er jeg overvejere at finde en anden løsning, men hvordan ved jeg ikke lige...
Avatar billede -mundi- Nybegynder
05. maj 2003 - 14:15 #13
får du nogen javascript fejl i popup winduet og har du slået status baren til ?
Avatar billede roenving Novice
05. maj 2003 - 14:17 #14
>>grunken

Du har helt ret, og der findes da også en metode på document, som hedder getElementsByName, men den returnerer et array, så:

opener.document.getElementsByName("Iframe_window")[0].reload()

men som der står i min bibel, så er den *heller* ikke til at stole på, hvis navnet kan undgås i elementet
Avatar billede tallens Nybegynder
05. maj 2003 - 14:20 #15
nej... ingen fejl, den køre uden synlige fejl i hvertfald..

jeg kan ikke se den laver noget andet end det den skal, eller rettere den gør bare ingen ting.. den åbner popup, jeg trykker submit, og den lukker vinduet ned efter 5 sek. (for at sikre at informationen er gemt)

/tall
Avatar billede -mundi- Nybegynder
05. maj 2003 - 14:22 #16
når det er på et lokalnet, er du så sikker på at den ikke bare reloader så hurtigt at du ikke ser det ? istedet for reload så prøv at sætte urlen til noget helt andet. f.eks google.com
Avatar billede grunken Nybegynder
05. maj 2003 - 14:28 #17
roenving jeg vidste sq ikke der var noget der hed det ;D, man lærer så længe man lever :)
Avatar billede roenving Novice
05. maj 2003 - 14:32 #18
,-)
Avatar billede grunken Nybegynder
05. maj 2003 - 15:15 #19
Hej tallens

lavede lige denne test, og det virker altså 10/4, så du må lave en anden fejl!
Avatar billede grunken Nybegynder
05. maj 2003 - 15:15 #20
Avatar billede tallens Nybegynder
05. maj 2003 - 15:16 #21
Hmm jeg kan slet ikke få det her skidt til at virke... det er små frustrerende !!

Jeg har prøvet alle jeres løsnings forslag, og intet synes at ville bide kød af... og jeg sidde selv med javaBiblen i min hånd med ansigtet mod Cleaveland for at finde en løsning, men den synes bare at ikke at bide i.

jeg ville ønske jeg kunne smide jer koden så i ville kunne se den, men det er desværre ikke muligt. (pt. )

jeg har prøvet at smide jeres linjer alle mulige steder i filen, og på alle mulige områder, med og uden ; og jeg ved ikke hvad.

men den vil bare ikke...
Avatar billede grunken Nybegynder
05. maj 2003 - 15:19 #22
Lol...

jeg tror jeg kan se fejlen!

vi har glemt at det skal være location.reload();
Avatar billede tallens Nybegynder
05. maj 2003 - 15:53 #23
Grunken, hmm jeg kan se dit virker perfekt, og lækkert at se, men jeg kan bare ikke forstå hvorfor den ikke vil.

hvad sker du hvis du putter din iframe ind i en frame.?!.. vil den så stadig kunne?..

det er som om den ignorer frame betegnelserne, lige meget hvad jeg gør så vil den ikke gøre noget ved mine frames.

jeg har kigget siderne igennem og der er ikke noget som "burde" køre i konflikt med siden.
Avatar billede grunken Nybegynder
05. maj 2003 - 16:10 #24
hehe, nu har jeg prøvet igen!

det er simpelthen sjovt....prøv mit link igen!, prøv at fjerne underscores i dine framenavne!

det er din framenavne der er dårlige
Avatar billede grunken Nybegynder
05. maj 2003 - 16:11 #25
og fjern osse store bogstaver!
Avatar billede grunken Nybegynder
05. maj 2003 - 16:12 #26
nå never mind!
Avatar billede dustie Mester
05. maj 2003 - 16:14 #27
Hehe ;-)
Avatar billede grunken Nybegynder
05. maj 2003 - 16:16 #28
http://www.grunken.dk/exp/343851.html

alt virker igen

Jeg giver op over for dit problem ;(
Avatar billede -mundi- Nybegynder
05. maj 2003 - 16:22 #29
du har ikke det samme framenavne mere end et sted vel
Avatar billede olebole Juniormester
05. maj 2003 - 18:28 #30
<ole>

Må jeg gætte på, dit iframe dokument har været opdateret, efter popUp'en bliver lukket?
Er det tilfældet, har du dermed mistet dit opener-object!

Løsning:
Læg din opener-funktion op i head-elementet i dit yderste frameset og kald fra iframe'en med:
  top.FUNKTIONSNAVN();

Så beholder du dit opener-object - med mindre du opdaterer hele framesettet.
Du skal så bruge den pågældende frames-sti mellem 'opener' og 'location.reload()':
  opener.mainFrame.IFRAMENAVN.location.reload();
(Håber, det er den rigtige sti - ellers må du rette den til)

/mvh
</bole>
Avatar billede olebole Juniormester
05. maj 2003 - 18:29 #31
"Må jeg gætte på, dit iframe dokument har været opdateret, efter popUp'en blev åbnet?" ... skulle der have stået  ;o)
/mvh
Avatar billede tallens Nybegynder
06. maj 2003 - 09:26 #32
Olebole: det lyder logisk nok, jeg tror jeg kan se problemet, men jeg er ikke sikker på hvordan det skal løses...

jeg har i mit frameset, i sin egen frame forneden, et javascript ur som ticker hvert sekund, jeg er et eller andet sted sikker på at det er det som måske fjerne focus fra min Iframe, men hvordan det skal omvendes kan jeg ikke lige overskue.

ej heller er jeg helt med på hvad det er du mener med at den skal stå i mit head element i yderste frameset.
Avatar billede =maddog= Nybegynder
06. maj 2003 - 09:32 #33
selve den side der indeholder framesettet har et head tag
<html>
<head>
<!-- DET HER -->
</head>
<frameset>
...
</frameset>
</html>
hvor du kan ligge et script
<head>
<script type="text/javascript">
function doThis() {
alert("Did it!");
}
</script>
</head>
dette script kan du nu kalde OVERALT i de forskellige (i)frames som
top.doThis();
Avatar billede tallens Nybegynder
06. maj 2003 - 09:47 #34
hehe jo tak maddog, så meget hvar jeg med på =)

men okey den vil ikke godtage og kalde scriptet nogen steder fra overhovedet.?

jeg vil lige prøve noget.

/Tallens
Avatar billede tallens Nybegynder
06. maj 2003 - 11:46 #35
hmmm ja.. det virkede så ikke...

den vil simpelthen bare ikke noget, jeg må nok sige tak til jer alle, og sige at i gjorde et godt stykke arbejde, vi fik det ikke til at virke, men i gad i det mindste bruge tid på at svare.

jeg ved ikke lige hvilken løsning jeg skal vælge nu.
jeg kan ikke lige se hvad som kan gøres.

men hvis i stadig har nogle forslag tilbage så er jeg åben for forslag.

jeg tror der er 2 ting som gør at den ikke vil.
1) at javascript uret fjerne focus fra "opener"
2) jeg tror at Iframe i et frameset gør at den ikke vil (eller også referer jeg til den forkert)

jeg har prøvet:
1) at smide grunkens/oleboles forslag, i headeren, i frameset, Iframe siden, popuppen, men uden resultat.
2) jeg har prøvet at lave en onsubmit, onclick, onLoad, Onunload -function flere forskellige måder unde resultat.
3) jeg har prøvet at referere til en anden side, eller åbne i en anden frame (uden resultat)
4) jeg har prøvet at lave forskellige ting for at få den til at virke.
function Updatepage(page)
{
top.Iframe_window.location=page;
}
OnLoad="Updatepage('pagetoload.asp');"
- og -
onUnLoad="parent.Iframe_window.reload();"
- og -
self.opener.document.frames("Iframe_window").reload(true);
- og -
opener.getElementById("Iframe_window").reload()
- og -
<a HREF="main.asp" TARGET="Iframe_window">TEST FRAME</a>
Jeg testede til sidst med et alm' link om jeg kunne refere fra popuppen, til "Iframe_window" og sjovt nok, så virkede det rent faktisk!!, så hvor javascripted misteder forbindelsen ved jeg ikke.

Jeg er totalt forvirret over at den ikke vil, jeg har gennemrodet JAvaScript biblen for en løsning, men jeg synes den blot gør det hele mere forvirrende.

/tallens
Avatar billede roenving Novice
06. maj 2003 - 11:53 #36
Øeh .-{

self.opener.document.frames("Iframe_window").reload(true);

skal være:

self.opener.document.frames["Iframe_window"].reload(true);

index skal angives i []

parametre i funktioner (her true) skal angives i ()

-- undskyld fejlen ;---(
Avatar billede tallens Nybegynder
06. maj 2003 - 12:06 #37
Den kommer med fejlen:

Linje: 9
Tegn: 1
Fejl: Adgang nægtet
Kode: 0

(Linje 9 er: self.opener.document.frames["Iframe_window"].reload(true);)
Avatar billede tallens Nybegynder
06. maj 2003 - 12:21 #38
jeg synes at læse noget om at den fejl kommer når man forsøger at bruge informationer fra en anden side på et andet site.

men det er ikke tilfældet, det hele ligger lokalt.?!
Avatar billede roenving Novice
06. maj 2003 - 12:27 #39
Deteh ... tænker jeg også umiddelbart ...

self.opener er egentlig også dobbeltkonfekt ...

-- har du forøvrigt også prøvet at bruge location.reload(true) i.st.f reload(true) ?-|
Avatar billede =maddog= Nybegynder
06. maj 2003 - 12:41 #40
javascript er sand-boxed og må ikke umiddelbart give adgang til andre domæner, protokoller eller porte.
Avatar billede tallens Nybegynder
06. maj 2003 - 13:12 #41
hmmm nbu siger den

Linje: 9
Tegn: 1
Fejl: "self.opener.document.frames["Iframe_window"].location" er null eller ikke et objekt
Kode: 0


hehe det her bliver sjovere og sjovere.. !

well den skal jo heller ikke give adgang til andre ting end samme side, samme folder, den skal bare refresh den sti =)
Avatar billede olebole Juniormester
06. maj 2003 - 14:56 #42
Du _skal_ skrive 'location.reload(true)' ... 'location' er et must.
Der er intet, der kan 'fjerne fokus fra opener'.

Ligger siderne under forskellige domæner, kan siden ikke reloades med JavaScript.
Jeg tror, du bliver nødt til at lægge en URL, hvis vi skal komme videre. Der bør absolut ikke være problemer i det her - hvis altså alle sider ligger under samme domæne  :)
/mvh
Avatar billede tallens Nybegynder
07. maj 2003 - 09:30 #43
hmm det bliver lidt svært at lave "working copy" jeg kan smide ud et sted, men jeg ser lige om jeg ikke kan lave en udgave til et sted (skulle ikke undre mig at den så vil virke der.

olebole:, jeg husker at skrive Location.reload(true), den inkludere bare ikke noget efter location i fejl meddelsen.

som sagt jeg vil se om jeg kan brygge en online udgave, da jeg godt kan se problemmatikken i at i ikke kan se hvad det er som laver fejlen. eller hvordan det er opbygget.
Avatar billede tallens Nybegynder
07. maj 2003 - 11:26 #44
okey jeg fik bakset en working copy i gang.

http://www.digitalpoetry.dk/test/
(jeg har fjernet all css formatering så det ser lidt skrabet ud, men det går nok, det er jo ikke det som giver fejlen)

Selv i den klippede/sniplede udgave laver den bøwl.. =) (heldigvis det samme bøwl, men stadig bøwl =)

/Tallens
Avatar billede olebole Juniormester
07. maj 2003 - 13:11 #45
Jamen, du gør jo slet ikke, som vi har foreslået  :)

I dit frameset-dokument, skriver du funktionen her:

<script language="javascript">
if (window.parent.frames.length > 0)
top.location.href = window.location.href;

function myOpen() {
  window.open('popup.asp', 'Editpage', 'width=300,height=270,resize=yes,status=yes');
}
</script>

Nu kan du på den knap/link, der skal åbne vinduet kalde med:
  onclick="top.myOpen()";

Så kan du kalde framesettet fra popUp'en med 'opener' og styre ned igennem frames-hierakiet:
  <button onclick="opener.FrameMain.Iframe_window.location.reload(true)">TEST</button>

/mvh
Avatar billede tallens Nybegynder
07. maj 2003 - 13:51 #46
AHHH TOTALT FORVILDT!! hehe =)

jeg må hellere rense øjnene eller noget, men det ser sku' ud til at virke nu, det er bare totalt lækkert, jeg har nok misforstået et par emner rundt omkring.

hvis det var muligt skulle i sku' alle ha en bid point, men jeg må nok sige at Olebole var den som kom med "lyset" i mit selvvalgte mørke! =)

Vh Tallens
Avatar billede moejensen Nybegynder
11. marts 2005 - 16:16 #47
lukketid
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester