Avatar billede vbmojo123 Nybegynder
18. maj 2000 - 09:18 Der er 30 kommentarer og
1 løsning

Returnere værdi fra popup vindue

Dette er lidt tricky. Jeg åbner et popup vindue fra mit "hovedvindue" (indeholder noget asp). Popupvinduet skal returnere en variabel til hovedsiden og lukke samtidig. (Altså en form for fjernstyring af hovedvinduet, som er frameopdelt) ... Ehh capice ?
Avatar billede erikjacobsen Ekspert
18. maj 2000 - 09:23 #1
Skriv en JavaScript-funktion i hovedvinduet og kald den fra popup-vinduet:

    window.opener.denderfunktion(enellernadenparameter);

Avatar billede vbmojo123 Nybegynder
18. maj 2000 - 09:28 #2
Ehh, jeg skal returnere en asp-ordre samtidig - (NB: popupvinduet er åbnet med javascript)
Avatar billede erikjacobsen Ekspert
18. maj 2000 - 10:17 #3
Det er jo kun en skitse, men du vil altså kunne aflæse en værdi, skrevet ind i popup-vinuduet,
og hvis det så er nødvendigt at køre asp-scriptet i hovedvinduet igen kan du jo
blot bruge

  document.location="mitscript.asp?id="+parametertilfunktionen;

i funktionen.

(Tyder de mange points på at du vil have en fiks og færdig løsning?)
Avatar billede vbmojo123 Nybegynder
18. maj 2000 - 10:29 #4
nej, erikjacobsen - pointene indikerer, at jeg har bakset med den satan i et par dage nu og ved at være godt og grundig træt af det, jeg er nemlig ikke særlig ferm til Javascript(mangel i min opdragelse) - så nej jeg leder bare efter en løsning, som jeg kan lære af og ikke en færdig pakke, men eksempler vil heller ikke skade - Til spørgsmålet: mit problem er, at hovedsiden er frameinddelt og i den ene frame er der "loaded" en asp-side ind, som skaber pop-up vinduet, hvor der kan listes en ny ASP som sendes tilbage til "modervinduet" med den specifikke frame, som skabte popup-vinduet...
altså "aktiverer" hovedvinduet og loade popup-vinduet asp ordre ind i ex. target "hoejreframe"

forresten tak for dine hurtige svar :)
Avatar billede erikjacobsen Ekspert
18. maj 2000 - 10:32 #5
Ja, ok - det varer nok ikke ved....

Lad mig lige spørge igen. Når popupen kommer tilbage, og afleverer en passende
lovlig værdi, skal da

  1) Den frame den kommer fra opdateres med et kald af asp-fil med den værdi som parameter
  2) eller hele framesettet læses ind igen, men den værdi som parameter

Det drejer sig vist bare om lige at få sat de rigtige navne på kaldene.
Avatar billede vbmojo123 Nybegynder
18. maj 2000 - 10:36 #6
løsning 1
Avatar billede erikjacobsen Ekspert
18. maj 2000 - 10:37 #7
Så skidt da - hæng på !!!
Avatar billede erikjacobsen Ekspert
18. maj 2000 - 11:07 #8
Jeg håber du kan læse min ene linie PHP - det var nemmest.
Det er vist noget i denne retning du ønsker.


fs.htm
----------
<html>
<head>
<title>Frameset</title>
</head>
<frameset cols="200,200">
    <frame src="f1.htm" name="f1">
    <frame src="f2.php?id=ingen" name="f2">
</frameset>
</body>
</html>

f1.htm
----------
<html>
<head>
<title>f1</title>
</head>
<body bgcolor="#FFFFFF">
Dette er venstre ramme.
</body>
</html>

f2.php
----------
<html>
<head>
<title>f2</title>
<script language="JavaScript">
<!--
  function tilbage(n) {
    if (n!='') {
      document.location="f2.php?id="+n;
    }
  }
//-->
</script>
</head>
<body bgcolor="#FFFFFF">
<? echo "Værdien er: $id<br><br>"; ?>
<a href="#" onclick="window.open('pop.htm');">popup</a>
</body>
</html>

pop.htm
----------
<html>
<head>
<title> New Document </title>
<script language="JavaScript">
<!--
  function hjem(v) {
  window.opener.tilbage(v);
  window.close();
  }
//-->
</script>
</head>
<body bgcolor="#FFFFFF">
<form name="f" onsubmit="return false;">
<input type="text" name="v"><br>
<input type="button" value="tryk her" onclick="hjem(v.value);">
</form>
</body>
</html>
Avatar billede erikjacobsen Ekspert
18. maj 2000 - 11:08 #9
if-Linien i f2.php skal være:

  if (n!='''') {
Avatar billede vbmojo123 Nybegynder
18. maj 2000 - 11:18 #10
Hej Erikjakobsen - Lige et hurtigt spørgsmål, når nu f2 indeholder asp-script kan den så hedde .php ??
Avatar billede erikjacobsen Ekspert
18. maj 2000 - 11:22 #11
nej nej, den skal hedde f2.asp ;-)
Og mon ikke linien med php skal erstattes med

<% response.write("Værdien er " & request.querystring("id") & "<br><br>")  %>

Avatar billede vbmojo123 Nybegynder
18. maj 2000 - 11:27 #12
synes det nok :)
Avatar billede vbmojo123 Nybegynder
18. maj 2000 - 14:01 #13
har lidt problemer med at få det til at virke :(

blandt andet, fordi jeg har en onblur=window.close()

i bodyen på popupvinduet

ved du om det kan lade sig gøre at udføre en ordre - f.eks. form med den der onblur javaordre liggende?
Avatar billede erikjacobsen Ekspert
18. maj 2000 - 14:21 #14
Kunne det tænkes, at du blot kan sige

  <body .... onblut="tilbage(document.f.v.value);">

?
Avatar billede erikjacobsen Ekspert
18. maj 2000 - 14:22 #15
undskyld:

  <body .... onblur="hjem(document.f.v.value);">
Avatar billede vbmojo123 Nybegynder
18. maj 2000 - 14:49 #16
er igang med at undersøge muligheden - får en fejl v er ikke defineret fejl
Avatar billede vbmojo123 Nybegynder
18. maj 2000 - 14:54 #17
og mens jeg er igang, forsøger jeg at få den til at virke uden form, men med anker istedetfor..., men som sagt du har virkelig fået sendt mig på rette vej - så hvis du synes det her trækker i langdrag bare sig til, jeg er ihvertfald tilfreds med din kyndige vejledning - hilsen vbmojo123
Avatar billede erikjacobsen Ekspert
18. maj 2000 - 15:18 #18
v'et er jo altså navnet mit eksempel. Det kan
være du har et andet. Jeg har som sagt ikke
prøvet, og jeg ved faktisk heller ikke hvad
du vil med din onblur.

Nahja, lad os da bare fortsætte!
Avatar billede vbmojo123 Nybegynder
18. maj 2000 - 15:33 #19
jamen, det lyder da godt - jo problemet med popupvinduet er at det gerne skulle lukke sig selv, hvis nogen skulle klikke ved siden af det, men når der klikkes på et af ankerne skulle siden returnere en asp værdi - det er en smart sag, du har lavet indtil videre :)
jeg har dog lidt problemer med at finde ud af af det med onblur og anker i vinduet, men jeg knokler videre

Avatar billede olebole Juniormester
18. maj 2000 - 19:31 #20
<ole>
vbmojo123 >> selvom der er svaret og lukket, tænkte jeg, du måske kunne bruge dette ;-)
Det KUNNE være en idé at forcere popUp'en i fokus og tvinge brugeren til selv at lukke det, i stedet. Så undgår du den 'onblur', som tit kan give problemer.

------------------ snip ---------------------
function onTop() {
  self.focus();
  setTimeout("onTop()",200);
}
onTop();
------------------ /snip ---------------------

Så kan du dels lægge en 'Luk' knap i vinduet og du kan evt. lade det lukke ved et tryk på et link (lige efter at link'ets egentlige funktion er eksekveret).
Funktionen 'onTop()' fokuserer popUp'en 5 gange i sekundet.
/Vh
</bole>
Avatar billede erikjacobsen Ekspert
18. maj 2000 - 20:40 #21
Hvad så med  <body .... onblur="hjem('''');">  altså returnere den tomme
streng som værdi, hvis man klikker ved siden af. Det bliver der jo testet
for i mit lille eksempel.

Ja, Ole, jeg kender også de sider, hvor man simpelthen ikke kan
slippe af med popud-vinduerne ;-)
Avatar billede olebole Juniormester
18. maj 2000 - 20:55 #22
Problemet er at holde et popUp-vindue fremme, så længe det har en funktion og slippe af med det, når det har udspillet sin rolle. Helt galt går det, når det bliver brugt som reklamefremstød...det har altid virket agressivt på mig - og haft den modsatte effekt af den ønskede ;-)
NS barslede med noget 'alwaysRaised' (eller sådan noget), men jeg er ikke opdateret omkring implementeringen. Det kan være, du kan bidrage med noget...du plejer jo at have rimelig fod på udviklingen ;-)
Det smarte skulle være, at man skulle kunne tilgå begge vinduer uden fokus-problemer.
/Vh
Avatar billede erikjacobsen Ekspert
19. maj 2000 - 01:53 #23
Hej Ole. Du nærer høje tanker om mig. Min egen opfattelse er nu ikke at jeg har
hverken fod, hånd, eller andre andre legemsdele, på udviklingen, men at jeg
derimod kan et par grundlæggende principper. Og så kan jeg lidt spredte ting
i de hersens nymodens sprog PHP, ASP, HTML. Rent faktisk er der jo mange
spørgsmål jeg ikke forsøger at besvare her på eksperten.dk, fordi jeg ikke aner
hvad der foregår. Snik snak, snik snak. ;-)
Avatar billede vbmojo123 Nybegynder
19. maj 2000 - 12:02 #24
hej olebole, jeg ønsker, at vinduet skal lukke, når man klikker ved siden af eller kan man jo bruge kommandoen:

<body onBlur="window.focus()">

, hvor windows hele tiden er i fokus og ikke opdateres 200/1000 sekund. Men tak for hjælpen anyway ;)

Erikjacobsen: jeg kæmper stadig, for onblur driller lidt, når jeg prøve at sende aspordre med anker (det lød lidt snøvlet - ved det godt) - jeg vender tilbage senere -

god Storesnydedag

:)
Avatar billede olebole Juniormester
19. maj 2000 - 16:56 #25
vbmojo123 >> Nej, det fokuserer ikke vinduet i IE på Mac...kun i NS! Derfor...!  ;-))

<onblur = alert("I feel blurred");>  fungerer - og 'window.focus()' eller 'self.focus()' fungerer, når de ikke bliver kaldt på 'onblur' i body-tag'en...bare for en anden gangs skyld, selvom jeg har fundet ud af, det ikke er det, du vil denne gang.
/Vh

Avatar billede vbmojo123 Nybegynder
19. maj 2000 - 21:07 #26
Hej Olebole, tak for info - Suk(ikke af dig)... nu gik jeg lige og troede, at finder ud af de forskellige browsere og finder kommandoer, som kan køre på de to store var tricket, og nu er browserne forskellige fra mac/pc - GOD WHY WHY :)
Nå men jeg har stadig problemer med onblur og anker, for når jeg forsøger at vælge noget på min side, aktiveres onblur=hjem(værdi) og så fanger hovedsiden ikke den anden værdi, som bliver valgt på siden

Kan man sende den værdi(aspstreng), som bliver valgt på popupsiden tilbage samtidig med at hvis man klikker ved siden af siden, så lukker den - det er det jeg er på jagt efter, og det bliver ved med at drille mig - Jeg er nu overbevist om at købe en bog om javascript er på høje tid (nogen anbefalinger)


Avatar billede erikjacobsen Ekspert
19. maj 2000 - 22:33 #27
Du ændrer til (hvis ellers jeg har forstået dig ret - men du kan jo bare prøve)

vv=0;
function hjem(v) {
  if (vv==0) {
    window.opener.tilbage(v);
    vv=1;
  }
  window.close();
}
Avatar billede olebole Juniormester
20. maj 2000 - 09:08 #28
Ehhh....
  opener.window.tilbage(v);
Det er ikke 'vindues-åbneren', men 'åbnerens vindue' du gerne vil kalde funktionen i  ;-))
/Vh
Avatar billede olebole Juniormester
20. maj 2000 - 09:30 #29
VRØØØØØVL...!!!
Begge dele virker! Jeg synes, jeg engang har haft problemet, men det må åbenbart have været et andet!?! Argumentet skulle være, at 'åbneren' lå 'over' vindues-objektet. Den ligger - ser det ud til - både 'over' og 'under'...tjahhh...?!? De fortolkninger! ;-)))
Undskyld!
Avatar billede vbmojo123 Nybegynder
20. maj 2000 - 14:41 #30
Det som driller er, at når der står:

<body bgcolor="#aaaaaa" onblur="hjem('');">

for body hovedpriotet, hvilket gør, at f.eks. dette anker ikke fungerer.

<a href="#" onclick="hjem('ex');">EX</a></td>

at når jeg trykker på EX i popupvinduet eksekveres kun javaen i body - den reagerer overhovedet ikke på de "klikbare" elementer som jeg bygger i vinduet (har prøvet adskillige) også bare en med java script:alert ('det virker') - selv den bugger bliver ignoreret, men hvis jeg fjerner onblur-kommandoen fra body-tagen fungerer siden perfekt - bortset fra, at den ikke lukker af sig selv, hvis man klikker andetsted!!!
Avatar billede erikjacobsen Ekspert
20. maj 2000 - 21:41 #31
Du har et lille eksempel, vb, som du kan sende mig, eller vise mig
på nettet. Ik? Så kan jeg nok bedre forstå hvad der sker. Vi skal altså
bare have det til at virke!!
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