« 1 2 3 4 5 6 7 8 »
Autor Zpráva
LosFilipos
Profil
perwin:
Ovšem tam musí být window.parent.document.createElement

Hraj si a zkoušej...
perwin
Profil
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
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
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
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
perwin:
Zkušej, zkoušej...
perwin
Profil
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
perwin:
Vyzkoušej, zda to funguje a pak se ptej...
perwin
Profil
LosFilipos:
Ne nefunguje to...
Nic to nevypíše
perwin
Profil
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
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
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
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
LosFilipos:
Lze nějak při refreshi dokumentu nastavit, aby se refreshoval jenom 1x a ne vickrat? Dík
LosFilipos
Profil
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
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
LosFilipos:
Ktomu se tu objevila další chybka... vkládání textu do chatu mi nefunguje v IE...
LosFilipos
Profil
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
LosFilipos:
Promiň, není to tím IE, už jsem to opravil.
LosFilipos
Profil
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
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
perwin:
Ano...
perwin
Profil
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
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
LosFilipos:
Jak si pohrát s JS nebo meta tagem?
LosFilipos
Profil
Oh jesus... www.jakpsatweb.cz/enc/refresh.html
Chamurappi
Profil
Reaguji na perwina:
Nastavovat onclick přes setAttribute je jednak čuňárna, jednak to pořádně nefunguje.


Reaguji na LosFilipose:
Tady -> http://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
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
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
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
« 1 2 3 4 5 6 7 8 »

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0