Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [js][lamer] czemu działa tylko w MsIE ?
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
Bakus
W body mam:
[xml:1:2d77db1afb]<div id="progress_info"></div>[/xml:1:2d77db1afb]
W php napisałem funkcję:[php:1:2d77db1afb]<?php
function progress_text($t="")
{
print '<script type="text/javascript" language="JavaScript">' . "n";
print '<!--' . "n";
if(empty($t))
{
print "t" . 'progress_text('<table align="center" width="100%" cellspacing="0" cellpadding="0" border="0"><tr><td align="center" class="titre1">' . $t . '</td></tr></table>');' . "n";
}else{
print "t" . 'progress_text();' . "n";
}
print '//-->' . "n";
print '</script>' . "n";
@ob_flush();
}
?>[/php:1:2d77db1afb]
i do tego w nagłówku strony dodaję plik z funkcją JS:
Kod
    function progress_text(txt)

    {

        if (!document.layers&&!document.all) return;



        if (document.layers)

        {

            document.layers.progress_info.document.write(txt);

            document.layers.progress_info.document.close();

        }else if (document.all)

            progress_info.innerHTML=txt;

    }

Wywołuje to przez:[php:1:2d77db1afb]<?php
progress_text("Proszę czekać...");
// tu się coś długo wykonuje nic nie wysyłając do przeglądarki
progress_text();
//tu wyświetlam wynik pracy...
?>[/php:1:2d77db1afb]całość działa w MsIE, ale tylko w niej... (no i w konquerorze), ale nie wiem jak zrobić by działało również w np. mozilli... Jeżeli chodzi o JS, to jestem trochę lamerem i nieznam się zbytnio... Czy ktoś mi to może wytłumaczyć i pomóc przerobić? (tego JSa sam nie pisałem, tylko ściągnąłem z jakiejś strony...)
FiDO
Kod
    function progress_text(txt)

    {

        if (document.layers)

        {

            document.layers.progress_info.document.write(txt);

            document.layers.progress_info.document.close();

        }

        else

        {

            document.getElementById('progress_info').innerHTML=txt;

        }

    }
Bakus
Całość wygląda tak:
[php:1:6cc306a1b9]<?php ob_start(); ?>
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=iso-8859-2">
<?php
function progress_text($t="")
{
print '<script type="text/javascript" language="JavaScript">' . "n";
print '<!--' . "n";
if(!empty($t))
{
print "t" . 'progress_text('<table align="center" width="100%" cellspacing="0" cellpadding="0" border="0"><tr><td align="center" class="titre1">' . $t . '</td></tr></table>');' . "n";
}else{
print "t" . 'progress_text(" ");' . "n";
}
print '//-->' . "n";
print '</script>' . "n";
@ob_flush();
}
?>
<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript">
<!--
function progress_text(txt)
{
if (document.layers)
{
document.layers.progress_info.document.write(txt);
document.layers.progress_info.document.close();
}
else
{
document.getElementById('progress_info').innerHTML=txt;
}
}
// -->
</SCRIPT>

</HEAD>
<BODY>
<div id="progress_info"> </div>
<?php
progress_text("Pracuję...");
$a = implode('', file("http://eduseek.interklasa.pl/urn/konkurs/index.php"));
progress_text(" ");
print '<PRE>' . htmlspecialchars($a) . '</PRE>';
?>
</BODY>
</HTML>
<? ob_end_flush(); ?>[/php:1:6cc306a1b9]
Powyższy kod to zawartość pliku:
http://ftp.idn.myftp.org/forum.php.pl/test.php

Nie działa ani w IE ani w Mozilli... sad.gif
FiDO
Sama funkca w JS, ktora Ci podalem jest dobra, sprawdzalem zarowno w IE jak i Mozilli.
Zminimalizuj troche kod, w ktorym Ci to nie dziala, bo ten co jest w linku jest przydlugawy.

Pozatym co nie dziala?? Wyskakuje blad JS? Nie widac ladowania?
Bakus
ale jakimś dziwnym trafem Twój kod nie działa mi wogóle (ani w ie, ani w mozilli), tymczasem stary (różni się tylko kod funkcji w JS) działa... tylko w ie, ale działa...
FiDO
Sprawdzales samego JS'a osobno? Bo ja tak i on dziala, a to ze nie dziala Ci w tym skrypcie to jest wina buforowania.
[php:1:4dd78523ac]<HTML>
<HEAD>
<META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=iso-8859-2">
<?php
function progress_text($t="")
{
print '<script type="text/javascript" language="JavaScript">' . "n";
print '<!--' . "n";
if(!empty($t))
print "t" . 'progress_text('<h4>' . $t . '</h4>');' . "n";
else
print "t" . 'progress_text(" ");' . "n";

print '//-->' . "n";
print '</script>' . "n";
flush();
}
?>
<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript">
<!--
function progress_text(txt)
{
if (document.layers)
{
document.layers.progress_info.document.write(txt);
document.layers.progress_info.document.close();
}
else
{
document.getElementById('progress_info').innerHTML=txt;
}
}
// -->
</SCRIPT>

</HEAD>
<BODY>
<div id="progress_info"> </div>
<?php
progress_text("Pracuję...");
$a = implode('', file("http://eduseek.interklasa.pl/urn/konkurs/index.php"));
progress_text(" ");
print '<PRE>' . htmlspecialchars($a) . '</PRE>';

?>
</BODY>
</HTML>
[/php:1:4dd78523ac]

"Dziwnym trafem" ten kod dziala...
Bakus
nio i tu mamy problem... wykorzystuję ob_* do późniejszej weryfikacji niektórych danych...
W takim układzie chyba pozostanę przy statym rozwiązaniu... ale mimo wszystko dzięki za pomoc...
pomógł dałem, bo może to być pomocne osobom, ktore nie muszą korzystać z ob_* i im wystarczy flush(); ...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.