Autor Zpráva
jan99
Profil *
Ahoj, mam kod ktery funguje ve vsech prohlizecich (firefox, opera, chrome) ale v IE7 nefunguje (IE8, IE9 nemam moznost vyzkouset).

Soubor http://localhost/funguje.php zapisuje do .txt jestli se tam ten pozadavek GET dostal.

Takze pokud pouziju v IE7 kod nize tak vystup v .txt souboru neni zadny, ale jakmile pouziju primo jen create('http://localhost/funguje.php'); bez setTimeoutu tak to funguje (vystup se zapise do testovaciho .txt souboru).

Jak to ten setTimeout muze ovlivnit? Proc to bez setTimeoutu funguje a snim ne?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
window.setTimeout(function(){ create('http://localhost/funguje.php'); }, 1000);

    function create(u){
    var s = document.createElement('script');
        s.type = 'text/javascript';
        s.src = u;
        document.getElementById("test").appendChild(s);
    }
});
</script>
</head>

<body><div id="test"></div>


</body>
</html>

Diky
Chamurappi
Profil
Reaguji na jana99:
Explorer podporuje setTimeout se dvěma argumenty úplně stejně jako ostatní prohlížeče. V uvedeném kódu nevidím žádný nedostatek (až na to, že načítá úplně zbytečně jQuery), prosím o odkaz na živou ukázku.
Tori
Profil
jan99:
Jak je v PHP vyřešené to zapisování do souboru - nepřepisuje se vám obsah? edit: a ten php skript vrací použitelný JavaScript bez syntaktických chyb? IE7 a nižší jsou trochu přísnější na věci, které IE8, chrome,... tolerují.
jan99
Profil *
Spíš mi jde o to zjsitit jak může jedna a ta samá věc (kód) fungovat a zároveň nefungovat se setTimeoutem.

Jak už sem napsal uvedený kód naprosto funguje ve všech prohlížečích kromě IE. Taktéž funguje i v IE7 pokud funkci create('http://localhost/funguje.php'); volám přímo. Jakmile ji ale volám v IE7 se spožděním skrz setTimeout tak se GET požadavek vůbec nedostane k cílí tzn. "funguje.php".

Nevidím souvislost s obsahem souboru, i kdyby byl prázdný nebo neměl správný formát, maximálně by to zkončilo chybou v JS konzoli, ale stejně to nevysvětluje to proč to jednou funguje a pak zas ne.

Jako LIVE ukázka se dá použít ten kód co tu mám stím že jako create(); bude nějaká libovolná url..
Tori
Profil
jan99:
Zkoušela jsem, skript se načetl jen jednou, pak už (po obnovení stránky) ne, neposlal se požadavek na server. Příčinou byla cache prohlížeče, vyřešilo to přilepení proměnlivého parametru k adrese skriptu (timestamp):
function create(u){
    var d = new Date();
    var s = document.createElement('script');
    s.type = 'text/javascript';
    s.src = u+'?_t='+d.getTime();
    document.getElementById("test").appendChild(s);
}

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:

Prosím používejte diakritiku a interpunkci.

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