Javascript: Data Ophalen en Schrijven naar Popup

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo allemaal,

Momenteel ben ik bezig met een site waarin een popup geopend wordt,
popup = window.open("/content/admin/videos/popup.php", "popup_id", "scrollbars,resizable,width=500 ,height=400");

Nu kan ik zonder problemen data uit de popup halen en schrijven, bijv:
var data = popup.document.getElementById('videolist').innerHTML;

Mijn Probleem,
Wanneer de pagina (van waaruit de popup gegenereerd is) gerefesht wordt kan ik geen data meer schrijven of ophalen vanuit de popup omdat hij de variabele: Popup kwijt is (dit bestaat volgensmij uit een array?).

Wanneer ik de popup opnieuw laat genereren wordt de pagina in de popup ook gerefresht (wat niet de bedoeling is), maar kan ik wel weer communiceren met de popup.

Weet iemand hiervoor een oplossing?

M.v.g. Nick Jansen

Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 13-09 15:32

Sebazzz

3dp

Verwijderd schreef op woensdag 25 november 2009 @ 20:51:
Wanneer de pagina (van waaruit de popup gegenereerd is) gerefesht wordt kan ik geen data meer schrijven of ophalen vanuit de popup omdat hij de variabele: Popup kwijt is (dit bestaat volgensmij uit een array?).
Dat klopt, je pagina ververst, dus alle javascript wordt opnieuw uitgevoerd. Variabelen van de vorige keer worden opgeschoond. Daar is niets aan te doen, dat is nu eenmaal hoe het werkt. Zo ver ik weet is er niets aan het probleem te doen. Wat je hoogstens zou kunnen doen, maar is véry véry dirty is frame gebruiken (geen iframe) waarin je de dingen regelt en de window handle naar je popup vast houdt, of nog een tweede popup gebruiken. Maar beide oplossingen zijn niet echt netjes. Zie ook dit: http://www.irt.org/script/874.htm

Misschien probeer je iets te doen wat ook op een andere manier kan, wat wil je doen?

[ Voor 8% gewijzigd door Sebazzz op 25-11-2009 21:01 ]

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hmm, jammer!
Met het frame wil ook niet werken, en is idd absoluut niet netjes.

En er is geen manier om die variabele eerst in een cookie of iets dergelijks te zetten en vervolgens weer op te halen?

EDIT:
Ik zie nu net je link pas, alleen ik begrijp niet helemaal wat ze nou precies bedoelen.

[ Voor 19% gewijzigd door Verwijderd op 25-11-2009 21:12 ]


Acties:
  • 0 Henk 'm!

  • McVirusS
  • Registratie: Januari 2000
  • Laatst online: 18-08 16:56
Is volgens mij niet echt op te lossen. Je zou een cookie kunnen plaatsen als je een popup hebt geopend en dan on refresh 'm opnieuw openen zodat je weer een referentie er naar hebt.

Acties:
  • 0 Henk 'm!

  • McVirusS
  • Registratie: Januari 2000
  • Laatst online: 18-08 16:56
Verwijderd schreef op woensdag 25 november 2009 @ 21:09:
Hmm, jammer!
Met het frame wil ook niet werken, en is idd absoluut niet netjes.

En er is geen manier om die variabele eerst in een cookie of iets dergelijks te zetten en vervolgens weer op te halen?
Hehe, onze replies kruisten elkaar.

Ja je kan met Javascript cookies schrijven en lezen, maar je kan geen referentie naar een popup venster opslaan in een cookie (denk ik). Je kan hooguit het venster opnieuw openen en opnieuw de content genereren.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Haha ja inderdaad.

Ik zal even uitleggen wat ik precies wil,

De bedoeling is een lijst te genereren in de popup van dingen die opgeslagen moeten worden in een database.
Er verschijnen tekstvelden onder elkaar (dit heb ik werkend) waar de te bewerken waardes in staan als er bij een product op "Toevoegen" (op de hoofdpagina) is geklikt. Vervolgens kun je in de popup op opslaan klikken zodat de lijst wordt opgeslagen in de database.

Zolang de "main"pagina niet opnieuw wordt geladen of zolang er geen andere pagina wordt geopend. Werkt het script goed. Maar ik wil op meerdere pagina's waardes kunnen toevoegen aan deze lijst.

[ Voor 5% gewijzigd door Verwijderd op 25-11-2009 21:18 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Waarom doe je dat in godsnaam in een popup en niet in een (bijv) aparte tabel waarin je die items in een 'wachtrij' zet? Als je de items dan definitief wil opslaan pomp je ze van de wachtrij naar de uiteindelijke tabel. En bij verwijderen van items uit de wachtrij hoef je dus alleen maar in de wachtrij tabel te rommelen.

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • McVirusS
  • Registratie: Januari 2000
  • Laatst online: 18-08 16:56
Je zou ook nog die waardes kunnen opslaan in een serverside sessie (dan doe je toevoegen via Ajax). Bij toevoegen open je dan gelijk het venster (of heropen je het venster, als je 'm een naam geeft wordt het venster gewoon overschreven) en lees je de data uit de sessie uit.

Dan zou je eventueel ook nog een status van die lijst kunnen weergeven op de pagina's en niet alleen in popup.

Acties:
  • 0 Henk 'm!

  • McVirusS
  • Registratie: Januari 2000
  • Laatst online: 18-08 16:56
RobIII schreef op woensdag 25 november 2009 @ 21:22:
Waarom doe je dat in godsnaam in een popup en niet in een (bijv) aparte tabel waarin je die items in een 'wachtrij' zet? Als je de items dan definitief wil opslaan pomp je ze van de wachtrij naar de uiteindelijke tabel. En bij verwijderen van items uit de wachtrij hoef je dus alleen maar in de wachtrij tabel te rommelen.
Ik zou het in een sessie doen, krijg je ook geen vervuiling van je database.

Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 13-09 15:32

Sebazzz

3dp

McVirusS schreef op woensdag 25 november 2009 @ 21:24:
[...]


Ik zou het in een sessie doen, krijg je ook geen vervuiling van je database.
Dat kan, maar dan heeft de gebruiker geen optie om later zijn werk te hervatten.

offtopic:
Het is beter om het edit knopje te gebruiken om je post te editten als je wat toe te voegen hebt

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 13-09 09:39

Janoz

Moderator Devschuur®

!litemod

In de aanroepende pagina raakt je inderdaad je referentie kwijt. Wegschrijven naar iets gaat niet werken omdat je een referentie nu eenmaal niet kunt serializeren.

je zou het echter ook andersom kunnen proberen. Ik weet even niet de exacte restricties mbt sandboxing en of jij bij het browsen op hetzelfde domein blijft, maar het popup blijft natuurlijk gewoon weten wie hem geopend heeft (window.opener oid). Zet gewoon een interval die regelmatig het hoofdscherm verteld wie hij is. Zodra er dan een andere pagina ingeladen wordt krijgt hij de referentie door van de popup zelf.

Je moet alleen nog ff wat foutafhandeling regelen (mislopende interval omdat de pagina nog niet geladen is of een aanroep terwijl de popup zichzelf nog niet bekend heeft gemaakt)

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
McVirusS schreef op woensdag 25 november 2009 @ 21:24:
Ik zou het in een sessie doen, krijg je ook geen vervuiling van je database.
Dat kan ook; hangt er natuurlijk vanaf hoe 'persistent' die gegevens moeten zijn ;)
Sebazzz schreef op woensdag 25 november 2009 @ 21:26:

offtopic:
Het is beter om het edit knopje te gebruiken om je post te editten als je wat toe te voegen hebt
:D Dat weet 'ie na 6,5 jaar modereren ook wel ;) Ik neem aan dat 't een oops was ;)

[ Voor 36% gewijzigd door RobIII op 25-11-2009 21:27 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ja daar zit ik nu inderdaad al over na te denken.

Maar hoe reageerd een server op veel sessies als het erg druk is op de site?
Kan dat een server vertragen of zijn het vooral de pageviews e.d. die de site vertragen?

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op woensdag 25 november 2009 @ 21:27:
Maar hoe reageerd een server op veel sessies als het erg druk is op de site?
Doe eens gek en probeer het? Of zoek het op?
Verwijderd schreef op woensdag 25 november 2009 @ 21:27:
Kan dat een server vertragen of zijn het vooral de pageviews e.d. die de site vertragen?
Ja en misschien en nee. Meten = weten natuurlijk. Daarbij is het nogal afhankelijk van wat je opslaat in die sessie e.d. natuurlijk en hoe "zwaar" je pagina's zijn. Dit is gewoon koffiedik kijken voor ons.

Kort: Wat is "veel sessies"? 10? 100? 10.000? 1.000.000? En wat zit er aan hardware achter? Een Pentium III of een Jaguar?

[ Voor 15% gewijzigd door RobIII op 25-11-2009 21:31 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • McVirusS
  • Registratie: Januari 2000
  • Laatst online: 18-08 16:56
Kan me niet voorstellen dat sessies erg zwaar zijn voor de server. Is gewoon een lokaal tekstbestand ergens in een tijdelijke directory.

Vaak refreshen van data via Ajax is wel zwaar ;).

Ligt natuurlijk ook wel aan het type data en dergelijke (als er een database connectie voor nodig is is het zwaarder dan al geef je alleen data uit een sessie terug).

Toevallig pas een drukbezochte site gezien die om de 10 seconden een poll deed om winkelwagentje status te updaten. Trok behoorlijk de server naar beneden. Maar dat was een heel druk bezochte site.

[ Voor 49% gewijzigd door McVirusS op 25-11-2009 21:35 ]


Acties:
  • 0 Henk 'm!

  • torp
  • Registratie: Januari 2001
  • Laatst online: 08-09 12:48
McVirusS schreef op woensdag 25 november 2009 @ 21:24:
Ik zou het in een sessie doen, krijg je ook geen vervuiling van je database.
Zo heb ik iets dergelijks ook opgelost voor een shop.
Als je nu geen plek meer hebt voor de tijdelijke lijst zou je eventueel ook een extra layer kunnen maken met een thickbox, zo'n net-alsof-popup. Op die manier kun je de lijst bekijken zonder de pagina te verlaten.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben eruit, heb nu iets geschreven met sessies en dat werkt ook prima.

In eerste instansie wilde ik "de nog niet definitieve lijst" op de computer van de gebruiker houden om de server minder te belasten, echter is het ook wel fijn om niet al je data kwijt te zijn na het perongelijk sluiten of refreshen van de popup.

Ik wil iedereen bedanken voor de zeer snelle reacties.....anders was ik nog steeds met een speurtocht naar het juiste script.

Bedankt!

Acties:
  • 0 Henk 'm!

  • djexplo
  • Registratie: Oktober 2000
  • Laatst online: 07-07 15:40
torp schreef op woensdag 25 november 2009 @ 21:38:
[...] ... zou je eventueel ook een extra layer kunnen maken met een thickbox, zo'n net-alsof-popup. Op die manier kun je de lijst bekijken zonder de pagina te verlaten.
Dat gebruik ik zelf ook :). Een popup past niet bij de huidige tab gestuurde browsers, en word vaak ook geblokkeerd door browser of add-on.

'if it looks like a duck, walks like a duck and quacks like a duck it's probably a duck'

Pagina: 1