Autor Zpráva
Onecar
Profil
Zdravím,

řeším tu teď velmi závažný problém, u kterého se domnívám, že mne velmi brzy raní mrtvice.

Chtěl jsem si naprogramovat pěkný AJAXový guestbook. Oprášit všechny své prachem zanesené znalosti, však to znáte. Netušil jsem ale, že interpretace JavaScriptu, který příliš neovládám, se může v odlišných prohlížečích tak hodně lišit.

No ale k věci - tady jsem hodil svou současnou verzi GBooku. http://jednoauto.com/lab/gbook/ . Zkuste si prosím nyní v Opeře 9 kliknout do oněch inputů a správně je vyplnit. Měli byste vidět (sejně jako já, uživatel Opery) vedle inputů ikonku zelenou, či červenou, a odpovídající text. Tak jsem si to představoval, v Opeře to jede jako po másle. Interaktivní formulář, mňam.

Nevím, který jelimán, tatar či plantážník za to může, ale ono zobrazování stavu vyplnění inputu nefunguje v Firefoxu 2 a IE7. Což o to, IE7 bych oželel (v IE6 jsem se pro sichr ani nedíval, tam ve funkčnost nedoufám), ale to, že to NEFUNGUJE v Firefoxu, je fatální, kardinální a vůbec obrovitánský problém. Ještě že vlastní povedenou chybovou konzoli, která hlásí v podstatě jen 2 chyby:

Chyba: error is not defined
Zdrojový soubor: http://localhost/gbook/js.js
Řádek: 112 (a různé jiné typy řádků - furt to samé, ale co s tím, "error is not defined" ?)

Chyba: setting a property that has only a getter
Zdrojový soubor: http://localhost/gbook/js.js
Řádek: 26 (a další 4 lajny - opět naprosto nechápu, co se mi tímto snaží Firefox říci)

Suma sumárum, tyto dvě chyby mohou za to, že Firefox nefunguje tak jako Opera. Nevyčítám mu to, s JavaScriptem začínám, je ale pro mě opravdu důležité, aby to jelo. Pokud mi pomůžete, Bůh vám to vrátí na dětech, děkuju mnohokrát.

Script:
js.js -> http://jednoauto.com/lab/gbook/js.js
los
Profil *
Chyba: error is not defined
Vždy keď nastavuješ premennú error, tak ju deklaruješ ako lokálnu premennú (použitím var) a neskôr sa pokúšaš čítať z globálnej premennej, ktorá nie je definovaná. Takže na začiatok daj var error a z riadkov, kde priraďuješ hodnotu odstráň to var. Túto chybu hlási aj Opera.

Chyba: setting a property that has only a getter
Nastavuješ vlastnosť style, ale z tejto vlastnosti sa dá len čítať. Namiesto status_name.style = 'visibility: visible;' použi status_name.style.visibility = "visible".
Onecar
Profil
No, díky tvé radě s status_name.style.visibility = "visible" to již Firefox zvládne přechroustat, ale Opera zas ne.

Nelze nějak tyto dva prohlížeče pomocí JS odlišit?
Onecar
Profil
Opravdu nikdo neví? :-(
fos4
Profil
Nemas error jako globalni promenou.
na zacatku toho souboru .js si dej
var error = null;
a pak ve funkcich nedavej var error pac tim definujes lokalni promenou ve fci a prebyjes tak tu globalni.
fos4
Profil
a na odliseni prohlizecu :

var IE = (document.all && document.getElementById && !window.opera);
var FF = (!document.all && document.getElementById && !window.opera);
var OP = (document.all && document.getElementById && window.opera);
DoubleThink
Profil *
Nevím, který jelimán, tatar či plantážník za to může
Programátor, jako vždy.

Což o to, IE7 bych oželel (v IE6 jsem se pro sichr ani nedíval, tam ve funkčnost nedoufám)
Zábavné. Právě jsi oželel 90% návštěvníků. Opera, pro kterou tak vehementně ladíš, se pohybuje stále pod jedním procentem.

No, díky tvé radě s status_name.style.visibility = "visible" to již Firefox zvládne přechroustat, ale Opera zas ne.
To se mi moc nezdá. Vlastnost style umí Opera bez problému používat.
peta
Profil
fos4
var IE = (document.all && document.getElementById && !window.opera);
:)
var OP = (document.all && document.getElementById && window.opera);
:)))
var FF = (!document.all && document.getElementById && !window.opera);
:)

stare IE nemusi znat document.getElementById
O - tak to je naprosto zbytecne kontrolovat 3 funkce, kdyz vsechny musi byt 1, staci window.opera
FF - zbytecne zjistovat window.opera

Onecar
"Opeře to jede jako po másle." - Opera je ale smej nejvetsi, to jeste nic neznamena :)

status_name.style = 'visibility: visible;';
obvykle se to pise takto:
status_name.style.visibility='visible';
treba se pokousis pracovat s neexistujicim objektem

JS kozola ve Firefoxu hlasi:
Chyba: error is not defined
Zdrojový soubor: http://jednoauto.com/lab/gbook/js.js
Řádek: 112
Varování: Chyba při parsování hodnoty vlastnosti 'float'. Deklarace vynechána.
Zdrojový soubor: http://jednoauto.com/lab/gbook/style.css
Řádek: 5
... pri psani do inputu
Chyba: setting a property that has only a getter
Zdrojový soubor: http://jednoauto.com/lab/gbook/js.js
Řádek: 77
Chyba: setting a property that has only a getter
Zdrojový soubor: http://jednoauto.com/lab/gbook/js.js
Řádek: 92
Chyba: setting a property that has only a getter
Zdrojový soubor: http://jednoauto.com/lab/gbook/js.js
Řádek: 101
Chyba: setting a property that has only a getter
Zdrojový soubor: http://jednoauto.com/lab/gbook/js.js
Řádek: 44
Chyba: setting a property that has only a getter
Zdrojový soubor: http://jednoauto.com/lab/gbook/js.js
Řádek: 26
webcreator
Profil
Nefunguje mi tahle stranka pod mozillou

Pod IE 6 funguje takto:: Jednou za 40ms poslu dotaz naserverovou php stranku, ta mi vrati retezec a ten zobrazim do inputu

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<script type="text/javascript">
function start()
{
window.setInterval("synonyma()", 40);
}
function synonyma() {

if (window.XMLHttpRequest) {
http_request = new XMLHttpRequest();
} else if (window.ActiveXObject) {
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (eror) {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
}
}

http_request.onreadystatechange = function() { zpracuj(http_request); };
http_request.open('POST', 'synonyma.php', false);
http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
http_request.send(null);
}

function zpracuj(http_request) {
if (http_request.readyState == 4)
{
if (http_request.status == 200)
{
document.text.cisloa.value = http_request.responseText;
}
else
{
document.text.cisloa.value = "Chyba";
document.text.napetia.value = http_request.status;
document.text.haha.value = http_request.responseText;
}
}
}
</script>
</head>
<body onload="start(); synonyma()">

<h2>Synonyma p?es AJAX</h2>

<input type="text" name="string" id="string" class="string">
<!--<input type="submit" name="submit" value="submit" onclick="synonyma();">-->

<form name='text'>
<input type='text' name='cisloa' value='1' readonly>
<input type='text' name='napetia' value='nnn' readonly>
<input type='text' name='haha' value='nnn' readonly>
</form>
</body>
</html>
peta
Profil
webcreator

form name='text'
neco.text je psani textoveho obsahu do element
kdo vi, co se stane pri
document.text.cisloa.value = "Chyba";

co to pise za chybu?
Z jakeho prikladu jsi vychazel, ktery fungoval? Dohledat rozdily...

Jinak si zalozim vlastni tema pro svuj dotaz. Pokud nechces neco pridat k tematu zalozenemu Onecar. Taky by se mohlo stat, ze ti to moderator nenavratne smaze a muzes to psat znova. Jak to ma ve zvyku treba Dero. Nekteri to jen presouvaji... Ale tez je pak problem si to dohledat, kam.
DoubleThink
Profil *
Jak to ma ve zvyku treba Dero
Nebo já...

Nekteri to jen presouvaji
Minibb neumí přesunout (osamostatnit) část vlákna. Není jiná možnost než mazat.

muzes to psat znova
Jako terapie proti psaní OT příspěvků je to velmi účinné.
Keilew
Profil
DoubleThink
Minibb neumí přesunout (osamostatnit) část vlákna. Není jiná možnost než mazat.
Ale umí... http://www.minibb.net/download.html

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: