Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Odovzdávanie parametrov druhému oknu v PHP

Prajem všetkým pekný Nový rok a hneď začnem otázkou. Určite mnohí poznáte rozhranie OrangePortal so službou Môj Assistent. Ak niekomu chcete poslať SMS, tak sa to robí tak, že vo formulári zadáte text SMS a telefónne číslo. Ak nechcete zadávať číslo, tak klepnete na odkaz, otvorí sa nové okno, v ňom si vyberiete príjemcu SMS a po potvrdení sa zobrazí jeho telefónne číslo v tomto prvom formulári a nové okno sa zavrie. Tento efekt potrebujem dosiahnuť v mojej PHP aplikácii. Potrebujem niečo zadať v novom okne s tým, že sa to vloží do hlavného okna do políčok formulára. Viete mi niekto poradiť ako to urobiť, prípadne ako to nazvať, aby som aspoň mal predstavu ako to nájsť cez Google?

Předmět Autor Datum
Řekl bych, že to je javascriptové řešení. PHP se na to nehodí. Koukni do zdrojáku na Orangeportal.
host 01.01.2008 16:52
host
Skúsim.
msx. 01.01.2008 17:03
msx.
Ještě tady nějaké odkazy: http://interforum.interval.cz/ShowPost.aspx?PostID= 17968 http://diskuse.j…
host 01.01.2008 17:44
host
Pomocou PHP urcite nie. Mozes to urobit aj takym sposobom, ze zavolas cez javascript vytvorenie nove…
Intex 01.01.2008 22:20
Intex
Funkcia showModalDialog je IE only fičúra, ktorá je síce pekná, ale bez nejakej náhrady pre ostatné…
los 01.01.2008 23:45
los
Nefungovalo by jednoduchšie riešenie? window.open sa dá brať ako popup a to môže prehliadač stopnúť.…
msx. 19.03.2008 09:32
msx.
Na pristupovanie k oknu používaš window.parent namiesto opener. V parent je rodičovské okno v prípad…
los 19.03.2008 10:03
los
<form name="form2"> <input type="button" name="button1" value="Doplnenie" onclick="window.opener.doc…
msx. 19.03.2008 10:14
msx.
Operu nemám momentálne k dispozícii, ale určite tam je niekde konzola JavaScriptu, ktorá ti napíše p…
los 19.03.2008 14:35
los
JavaScript - http://localhost/bbb.htm Event thread: click Error: name: TypeError message: Statement…
msx. 26.03.2008 09:21
msx.
document.forms.form1 To mi neberie už žiadny prehliadač. Nie náhodou toto? document.forms[form1]…
msx. 26.03.2008 13:40
msx.
Skús si prejsť tie stránky validátorom, či tam nie je nejaká iná chyba, kvôli ktorej potom Opera nev…
los 26.03.2008 15:07
los
Tak to máš nejaký iný prehliadač, než všetky, s ktorými som sa doteraz stretol. Beriem späť, to mi… poslední
msx. 26.03.2008 16:20
msx.

Pomocou PHP urcite nie. Mozes to urobit aj takym sposobom, ze zavolas cez javascript vytvorenie noveho okna:

showModalDialog("page.html", window, "parametre"); // vytvorenie noveho okna

V otvorenom okne na prislusny objekt zavolas javascriptovinu na ziskanie objektu, cez ktory sa vytvorilo okno:

var callerWindowObj = dialogArguments; // ziskanie objektu, ktory vytvoril okno
callerWindowObj.param1; // ulozenie paramertu1 do globalnej premennej (lepsie je pole objektov)
callerWindowObj.param2; // ulozenie parametru2 do globalnej premennej (lepsie je pole objektov)
// ... tu mozes mat parametrov od vymyslu sveta, co len chces, co len potrebujes...
callerWindowObj.userFunction(); // nad objektom zavolas javascriptovinu, ktora spracuje vysledky
window.close(); // okno zavries

Tymto sposobom dokazes urobit veeeeeeeelmi krasne veci...

edit: po precitani losovho prispevku som si uvedomil, ze tento priklad je naozaj len pre IE (zabudol som to napisat...)

Funkcia showModalDialog je IE only fičúra, ktorá je síce pekná, ale bez nejakej náhrady pre ostatné prehliadače nemá na webe zmysel.

V JavaScripte môžeš otvoriť nové okno metódou window.open a v ňom môžeš pristupovať k oknu, ktoré ho otvorilo, prostredníctvom vlastnosti window.opener.

Nefungovalo by jednoduchšie riešenie? window.open sa dá brať ako popup a to môže prehliadač stopnúť. Škúšam toto a nefunguje to (neprepíše hodnotu text1):

aaa.htm

<form name="form1">
  <input type="text" name="text1" value="aaa"><br>
  <a href="bbb.htm" target="_blank">Doplnenie</a>
</form>

bbb.htm

<form name="form2">
  <input type="button" name="button1" value="Doplnenie" onclick="window.parent.document.form1.text1.value='bbb';">
  <input type="button" name="button2" value="Zavri" onclick="window.close();">
</form>
<form name="form2">
  <input type="button" name="button1" value="Doplnenie" onclick="window.opener.document.form1.text1.value='bbb';">
  <input type="button" name="button2" value="Zavri" onclick="window.close();">
</form>

Nefunguje ani tak.

Edit: Oprava, nefunguje to len v Opere. Vedel by niekto poradiť čo s tým? Potrebujem to rozchodiť v nej.

JavaScript - http://localhost/bbb.htm
Event thread: click
Error:
name: TypeError
message: Statement on line 1: Could not convert undefined or null to object
Backtrace:
  Line 1 of  script 
    window.opener.document.form1.text1.value = "bbb";
  At unknown location
    [statement source code not available]

Konzola mi napísala toto, ale som z toho vedľa. Nechápem, čo má za problém, keďže objekty existujú.

Skús si prejsť tie stránky validátorom, či tam nie je nejaká iná chyba, kvôli ktorej potom Opera nevie nájsť ten formulár.

document.forms.form1
To mi neberie už žiadny prehliadač

Tak to máš nejaký iný prehliadač, než všetky, s ktorými som sa doteraz stretol.

document.forms[form1]
Ale toto je ekvivalentný zápis.

Ekvivalentný zápis to je, keď to tam dáš ako reťazec, nie ako premennú.

Tak to máš nejaký iný prehliadač, než všetky, s ktorými som sa doteraz stretol.

Beriem späť, to mi funguje, asi som to mal vtedy zle refreshnuté.

Ekvivalentný zápis to je, keď to tam dáš ako reťazec, nie ako premennú.

Áno, malo to byť v úvodzovkách, zabudol som ich len napísať.

Zpět do poradny Odpovědět na původní otázku Nahoru