Autor | Zpráva | ||
---|---|---|---|
LosFilipos Profil |
#1 · Zasláno: 11. 12. 2010, 23:07:22
perwin:
Ovšem tam musí být window.parent.document.createElement Hraj si a zkoušej... |
||
perwin Profil |
#2 · Zasláno: 11. 12. 2010, 23:11:59
LosFilipos:
Mám pár dotazů... 1) Jak mám nastavit, kam se elementy vyroběj? Jestli na konec stránky nebo na začatek...? 2) Jak mám ukončit párové elementy? Jako např. <form> a </form>? Díky |
||
LosFilipos Profil |
#3 · Zasláno: 11. 12. 2010, 23:16:41 · Upravil/a: LosFilipos
perwin:
Elementy se ukončují samy, neb musíš provést něco ve smyslu: Opravdu jen schématicky: div = createElement('DIV'); div.setAttribute('id', 'okno_chatu' ); form = createElement('FORM'); .. všechny atributy... input = createElement('INPUT'); ... bla bla form.appendChild(input); // tím se daný input vloží mezi tagy formuláře div.appendChild(form); // tím se vloží celý form včetně všech atribut a inputů do tagu div. window.parent.document.body.appendChild(div); // tím se to přidá do stránky |
||
perwin Profil |
#4 · Zasláno: 11. 12. 2010, 23:20:40 · Upravil/a: perwin
LosFilipos:
A takto to tedy má vypadat v té php podmínce? <?php ... echo " <script language='JavaScript'> var div1 = window.parent.document.createElement('DIV'); var form1 = window.parent.document.createElement('FORM'); form1.setAttribute('action', \"javascript:request('".$_SESSION['login']."'); javascript:erase()\"); form1.setAttribute('method', 'post'); form1.setAttribute('name', 'forml'); var input1 = window.parent.document.createElement('INPUT'); input1.setAttribute('type', 'submit'); input1.setAttribute('value', 'Odeslat příspěvek'); input1.setAttribute('onclick', \"if(document.forms.forml.text.value==''){return false;}\"); form.appendChild(input1); div.appendChild(form1); window.parent.document.body.appendChild(div1); </script> "; ... ?> |
||
LosFilipos Profil |
#5 · Zasláno: 11. 12. 2010, 23:24:37 · Upravil/a: LosFilipos
perwin:
Musí tam být to appendChild tedy: <script type="text/javascript"> var div1 = window.parent.document.createElement('DIV'); var form1 = window.parent.document.createElement('FORM'); form1.setAttribute('action', 'javascript:request(<?php echo $_SESSION['login']?>); javascript:erase()'); form1.setAttribute('method', 'post'); form1.setAttribute('name', 'forml'); var input1 = window.parent.document.createElement('INPUT'); input1.setAttribute('type', 'submit'); input1.setAttribute('value', 'Odeslat příspěvek'); input1.setAttribute('onclick', 'if(document.forms.forml.text.value==''){return false;}'); form1.appendChild(input1); div1.appendChild(form1); window.parent.document.body.appendChild(div1); </script> A tím by se to mělo přidat na konec body nadřazené stránky... |
||
LosFilipos Profil |
#6 · Zasláno: 11. 12. 2010, 23:26:05
perwin:
Zkušej, zkoušej... |
||
perwin Profil |
#7 · Zasláno: 11. 12. 2010, 23:30:43
LosFilipos:
Takže takto ve finále: <script type="text/javascript"> var div1 = window.parent.document.createElement('DIV'); var form1 = window.parent.document.createElement('FORM'); form1.setAttribute('action', \"javascript:request('".$_SESSION['login']."'); javascript:erase()\"); form1.setAttribute('method', 'post'); form1.setAttribute('name', 'forml'); var textarea1 = window.parent.document.createElement('TEXTAREA'); textarea1.setAttribute('name', 'text'); textarea1.setAttribute('cols', '50'); textarea1.setAttribute('rows', '3'); var input1 = window.parent.document.createElement('INPUT'); input1.setAttribute('type', 'submit'); input1.setAttribute('value', 'Odeslat příspěvek'); input1.setAttribute('onclick', \"if(document.forms.forml.text.value==''){return false;}\"); var div2 = window.parent.document.createElement('DIV'); div2.setAttribute('id', 'm'); form1.appendChild(textarea1); form1.appendChild(input1); div1.appendChild(form1); div1.appendChild(div2); window.parent.document.body.appendChild(div1); </script> |
||
LosFilipos Profil |
#8 · Zasláno: 11. 12. 2010, 23:31:59
perwin:
Vyzkoušej, zda to funguje a pak se ptej... |
||
perwin Profil |
#9 · Zasláno: 11. 12. 2010, 23:37:28 · Upravil/a: perwin
LosFilipos:
Ne nefunguje to... Nic to nevypíše |
||
perwin Profil |
#10 · Zasláno: 11. 12. 2010, 23:43:58
LosFilipos:
Jako přímo na té stránce trychat.php (tak jsem si označil tu stránku s vypsáním chatového okna) se ten formulář vypíše. |
||
LosFilipos Profil |
#11 · Zasláno: 11. 12. 2010, 23:49:54
perwin:
Tak v čem je problém? Podívej se zde na příklad. Jsou tam dva soubory index.php a iframe.php, prohlédní si zdrojové kódy obou... |
||
perwin Profil |
#12 · Zasláno: 11. 12. 2010, 23:50:18
LosFilipos:
Aha, promiň, vypisuje se mi to. Ale je tam taková chybka. Jak se každých pět vteřin obnovuje ta stránka v iframu, tak se taky každých pět vteřin vypisuje znovu a znovu ten formulář... se mi tam klonuje... protože se ta stránka obnovuje každých pět vteřin a ten kód na vložení formuláře je v té stránce. |
||
LosFilipos Profil |
#13 · Zasláno: 11. 12. 2010, 23:54:58
perwin:
„Jak se každých pět vteřin obnovuje ta stránka v iframu, tak se taky každých pět vteřin vypisuje znovu a znovu ten formulář... se mi tam klonuje... protože se ta stránka obnovuje každých pět vteřin a ten kód na vložení formuláře je v té stránce.“ Ve stránce ktrerá je v iframu musíš nastavit, že pokud se formulář / okno chatu jednou zobrazí, tak už ho potom nazobrazuj, nebo naopak, když je otevřené okno chatu, tak nevypisuj celé window.parent.document.body.appendChild(div1), ale třeba jen zprávy do do divu s id M: window.parent.document.getElementById('m').innerHTML = zpravy... To už je na tobě, jaké řešení zvolíš... |
||
perwin Profil |
#14 · Zasláno: 12. 12. 2010, 00:01:16
LosFilipos:
Lze nějak při refreshi dokumentu nastavit, aby se refreshoval jenom 1x a ne vickrat? Dík |
||
LosFilipos Profil |
#15 · Zasláno: 12. 12. 2010, 00:07:41
perwin:
„Lze nějak při refreshi dokumentu nastavit, aby se refreshoval jenom 1x a ne vickrat?“ Ano, lze. Pomocí $_SESSION... Při prvním refreshi se uvede třeba $_SESSION["okno_chatu"] = true; a dáš si tam podmínku: if(!isset($_SESSION["okno_chatu"])) { // refreshni stránku } else { //nic nedělej } |
||
perwin Profil |
#16 · Zasláno: 12. 12. 2010, 00:17:39 · Upravil/a: perwin
LosFilipos:
Jako: $_SESSION["okno_chatu"] = true; if(!isset($_SESSION["okno_chatu"])) { $page = "stranka.php"; $sec = "5"; header("Refresh: $sec; url=$page"); } else { } - to tam mám takhle vložit? |
||
perwin Profil |
#17 · Zasláno: 12. 12. 2010, 00:23:23
LosFilipos:
Ktomu se tu objevila další chybka... vkládání textu do chatu mi nefunguje v IE... |
||
LosFilipos Profil |
#18 · Zasláno: 12. 12. 2010, 00:29:55
perwin:
„- to tam mám takhle vložit?“ Třeba, uvidíš, jestli to bude fungovat... Hlavně nesmíš zapomenout na session_start(); „vkládání textu do chatu mi nefunguje v IE...“ Tady -> http://filipovy.nazory.cz/test/ jsem to zkoušel v IE 7,8 a funguje to bez problémů... |
||
perwin Profil |
#19 · Zasláno: 12. 12. 2010, 00:34:06 · Upravil/a: perwin
LosFilipos:
Promiň, není to tím IE, už jsem to opravil. |
||
LosFilipos Profil |
#20 · Zasláno: 12. 12. 2010, 00:36:00
perwin:
Tak to si otestuj, jak funguje formulář, když se vkládá přes appendChild na nějakém základním přídkladu (bez ajaxu)... |
||
perwin Profil |
#21 · Zasláno: 12. 12. 2010, 00:37:40
LosFilipos:
Chci se zeptat - když přiložím k ještě neexistující $_SESSION["abc"] parametr true, oživí to tu session, která předtím neexistovala? |
||
LosFilipos Profil |
#22 · Zasláno: 12. 12. 2010, 00:40:22
perwin:
Ano... |
||
perwin Profil |
#23 · Zasláno: 12. 12. 2010, 00:42:02 · Upravil/a: perwin
LosFilipos:
Aha... Ten header("Refresh:") nefunguje.... Jak to mám udělat? A já vlastně nechci, aby se to refreshlo jenom jednou... já chci, aby se to refreshovalo do té doby, než se vyselectuje to jméno v db, a až se vyselectuje tak až pak se to přestane refreshovat, - prostě dokud ten dotyčný nezačne s někým chatovat, bude se to refreshovat - ale tam je potom problém, když začne chatovat s jedním a potom s druhým uživatelem - toho prvniho si to všimne a toho druhyho už ne. |
||
LosFilipos Profil |
#24 · Zasláno: 12. 12. 2010, 00:46:21
www.php.net/manual/en/function.header.php#99214 - asi budeš muset použít něco jiného... (meta tag nebo si pohrát s javascriptem...)
|
||
perwin Profil |
#25 · Zasláno: 12. 12. 2010, 00:49:28
LosFilipos:
Jak si pohrát s JS nebo meta tagem? |
||
LosFilipos Profil |
#26 · Zasláno: 12. 12. 2010, 00:51:40 · Upravil/a: LosFilipos
Oh jesus... www.jakpsatweb.cz/enc/refresh.html
|
||
Chamurappi Profil |
#27 · Zasláno: 12. 12. 2010, 04:53:48
Reaguji na perwina:
Nastavovat onclick přes setAttribute je jednak čuňárna, jednak to pořádně nefunguje.
Reaguji na LosFilipose: „Tady -> ht>tp://filipovy.nazory.cz/test/ jsem to zkoušel v IE 7,8 a funguje to bez problémů…“ V sedmičce mi to nefunguje, protože je přidávaný element vytvořený v jiném dokumentu, než do kterého je přidávaný. |
||
perwin Profil |
#28 · Zasláno: 12. 12. 2010, 09:39:47
Chamurappi:
„V sedmičce mi to nefunguje, protože je přidávaný element vytvořený v jiném dokumentu, než do kterého je přidávaný.“ Takže to mám udělat radši ve skrytém divu než v iframe? |
||
perwin Profil |
#29 · Zasláno: 12. 12. 2010, 12:23:59
LosFilipos:
Možná že už vím... jak mám ten script v trychat.php na kontrolu, jestli je $_SESSION["login"] v tabulce activechats: <?php session_start(); require "db.php"; $query = mysql_query("SELECT * FROM `activechats`"); while($result = mysql_fetch_array($query)) { if($result["id_uzivatele"] = $_SESSION["login"]) { echo " <script type='text/javascript'> var div1 = window.parent.document.createElement('DIV'); div1.setAttribute('style', 'position: absolute; top: 50px; left: 5px; background-color: red; width: 400px; height: 100px;'); var form1 = window.parent.document.createElement('FORM'); form1.setAttribute('action', 'javascript:request(\"".$_SESSION['login']."\"); javascript:erase()'); form1.setAttribute('method', 'post'); form1.setAttribute('name', 'forml'); var textarea1 = window.parent.document.createElement('TEXTAREA'); textarea1.setAttribute('name', 'text'); textarea1.setAttribute('cols', '40'); textarea1.setAttribute('rows', '3'); var input1 = window.parent.document.createElement('INPUT'); input1.setAttribute('type', 'submit'); input1.setAttribute('value', 'Odeslat příspěvek'); input1.setAttribute('onclick', \"if(document.forms.forml.text.value==''){return false;}\"); var div2 = window.parent.document.createElement('DIV'); div2.setAttribute('id', 'm'); form1.appendChild(textarea1); form1.appendChild(input1); div1.appendChild(form1); div1.appendChild(div2); window.parent.document.body.appendChild(div1); </script> "; } elseif($result["id_kamarada"] = $_SESSION["login"]) { echo " <script type='text/javascript'> var div1 = window.parent.document.createElement('DIV'); var form1 = window.parent.document.createElement('FORM'); form1.setAttribute('action', \"javascript:request('".$_SESSION['login']."'); javascript:erase()\"); form1.setAttribute('method', 'post'); form1.setAttribute('name', 'forml'); var textarea1 = window.parent.document.createElement('TEXTAREA'); textarea1.setAttribute('name', 'text'); textarea1.setAttribute('cols', '30'); textarea1.setAttribute('rows', '3'); var input1 = window.parent.document.createElement('INPUT'); input1.setAttribute('type', 'submit'); input1.setAttribute('value', 'Odeslat příspěvek'); input1.setAttribute('onclick', \"if(document.forms.forml.text.value==''){return false;}\"); var div2 = window.parent.document.createElement('DIV'); div2.setAttribute('id', 'm'); form1.appendChild(textarea1); form1.appendChild(input1); div1.appendChild(form1); div1.appendChild(div2); window.parent.document.body.appendChild(div1); </script> "; } else { Header("Refresh: 5; trychat.php"); } // dokud se nenalezne $_SESSION["login"] v tabulce activechats, bude se to refreshovat } ?> - to by mělo fungovat, ne? |
||
perwin Profil |
#30 · Zasláno: 12. 12. 2010, 12:29:54 · Upravil/a: perwin
Nebo by taky šlo:
<?php elseif($result["id_kamarada"] != $_SESSION["login"] or $result["id_uzivatele"] != $_SESSION["login"] ) { Header("Refresh: 5; trychat.php"); } ?> Ale je problém, že to nefunguje... poraďte mi prosím. Díky |
||
Téma pokračuje na další straně.
|
0