| 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