Autor | Zpráva | ||
---|---|---|---|
Pinqui Profil |
#1 · Zasláno: 10. 3. 2009, 16:39:55
Dobrý den otevírám toto téma neboť je toto téma přímé ku problému.
Scripty jsou následující: html: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <meta name="generator" content="PSPad editor, www.pspad.com">; <script type="text/javascript" language="JavaScript" src="javascript.js"></script> <title></title> </head> <body onLoad="runTimer();"> <script>alert("pokus");</script> </body> </html> javascript: function ajaxFunction() { var xmlHttp; try { xmlHttp=new XMLHttpRequest(); } catch (e) { try { xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { alert("Nepodporuje AJAX"); return false; } } } xmlHttp.onreadystatechange=function() { if(xmlHttp.readyState==4) { var body = document.getElementsByTagName('body')[0]; body.innerHTML = xmlHttp.responseText; } } xmlHttp.open("GET",location.href,true); //php subor xmlHttp.send(null); } function runTimer() { window.setInterval("ajaxFunction()", 5000); //interval refreshu... 1000 = 1 sekunda } Script se provede, když stránku otevřu, ale při znovunačtení přez javascript už okno nevyskočí, a já potřebuji aby vyskakovalo pomocí javascriptu každých 5vteřin. Chci to použít poté následovně: Mám soubor html, stejný jako je nahoře a tento javascript bude načítat jinou(php) stránku ve které proběhne kontrola mysql databýáze a vypíší se z ní data. Takže vždy když tam budou nový tak se přípíšou, ale také tam bude script jako je zde alert a ten se musí také provést. Proto potřebuji rozběhat hořejší příklad. Děkuji |
||
Joker Profil |
#2 · Zasláno: 10. 3. 2009, 16:45:55
Pinqui
Předpokládám, že myslíte ten alert s textem "pokus". Ten se ale provádí jen jednou. Když ho dáte dovnitř ajaxFunction, bude se provádět pokaždé ;-) |
||
Chamurappi Profil |
#3 · Zasláno: 10. 3. 2009, 16:56:09
Reaguji na Pinqui:
V kódu vkládaném přes innerHTML se nevyhodnocují skripty v elementu <script>. Musíš si najít jiný postup, nebo manuálně vyloupnout vnitřek <script>u regulárním výrazem a zavolat jej pomocí evalu. „var body = document.getElementsByTagName('body')[0];“ Referenci na <body> najdeš i v document.body. |
||
Pinqui Profil |
#4 · Zasláno: 11. 3. 2009, 00:38:10
Chamurappi
A nevíš jak by se dala přez ajax refreshovat stránka jako například: <? session_start(); require '../config.php'; /* =================================== overeni kicku =================================== */ $kick = $join_db->query("SELECT doba, nick FROM {$_GET[rid]}_kick WHERE nick='{$_SESSION['user_nick']}'"); if($kick->num_rows > 0){ $v_kick= $kick->fetch_array(); $doba_k = $v_kick["doba"]; if ($doba_k > Time()){ echo '<script type="text/javascript" language="javascript"> parent.location.href = "../?mag=10"; </script>'; } elseif ($doba_k < Time()){ $join_db->query("DELETE FROM {$_GET[rid]}_kick WHERE nick='{$_SESSION['user_nick']}'"); } } /* ================================== !overeni kicku! ================================== */ $result = $join_db->query("SELECT * FROM {$_GET[rid]}_text WHERE pro='all' OR pro='{$_SESSION['user_nick']}' OR od='{$_SESSION['user_nick']}' ORDER BY id DESC LIMIT 0, 500"); while($s_r = $result->fetch_array()){ if (($s_r[2] == $_SESSION['user_nick']) AND ($s_r[3] != "all")){ $znak = "->".$s_r[3].": "; } if ($s_r[3] == $_SESSION['user_nick']){ $znak = "->{$_SESSION['user_nick']}: "; } if ($s_r[3] == "all"){ if ($s_r[2] == ""){ $znak = "" ;}else $znak = ":"; } if (($s_r[3] != "System") AND ($s_r[3] != "{$_SESSION['user_nick']}") AND ($s_r[3] != "")){ $nahr_co = array($_SESSION['user_nick']); $nahr_cim = array("<span style=\"background: #F0FF90;\"><b>{$_SESSION['user_nick']}</b></span>"); $btext = str_replace($nahr_co, $nahr_cim, $s_r[4]); } else{ $btext = $s_r[4]; } $od_nick = $s_r[2]; echo "".$s_r[1].""; if ($s_r[3] == $_SESSION['user_nick'] AND $s_r[2] != 'System'){ $u_to = $join_db->query("SELECT * FROM users WHERE nick='$od_nick'"); while($ex = $u_to->fetch_array()){ ?> <a href="javascript:NewVisp(<? echo $ex[0] . ',' . $_GET['rid']; ?>);"><b> <? echo $od_nick; ?></b></a> <SCRIPT language="JavaScript" type="text/javascript"> function NewVisp(y,x){ okno = window.open("./visp.php?rid="+x+"&uid="+y , "name"+y, ["_blank", "width=500,height=300" , "toolbar=no,location=no,directories=no,status=no,scrollbars=yes,menubar=no,resizable=yes,left=0,top=0"] ); } </script> <? }} else echo "<b> ".$od_nick.""; echo"$znak </b> ".$btext."</font><br> "; } ?> Pokud to dělám složitě, jde mi o to(jako v chatu např libimseti, xchat atd..) aby se mi stránka znovunahrávala ale nemusela viditelně refreshovat a když dám kick(zapíšu mu kick do db) aby ho to vyhodilo(přesměrovalo z framesetů) Díky |
||
Pinqui Profil |
#5 · Zasláno: 12. 3. 2009, 19:22:17 · Upravil/a: Pinqui
:-(( prosííííííííííííííím
|
||
Chamurappi Profil |
#6 · Zasláno: 12. 3. 2009, 20:00:20
Reaguji na Pinqui:
V kódu vkládaném přes innerHTML se opravdu nevyhodnocují skripty v elementu <script>. Výkonnou část bych na tvém místě zařadil do JS, který se stará o zpracování odpovědi ze serveru. Neměl bys tedy dělat jen obyčejné „body.innerHTML = xmlHttp.responseText“, ale prozkoumat, co v responseText je. Třeba vyhledat text „<!-- vykopnout -->“ a teprve když jej najdeš, změníš location.href. |
||
Časová prodleva: 15 let
|
0