Autor Zpráva
Pinqui
Profil
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
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
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
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>&nbsp;<? 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
:-(( prosííííííííííííííím
Chamurappi
Profil
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.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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