Postări etichetate JavaScript

Emulator PC in browser, prin JavaScript

Fabrice Bellard, cel care a initiat proiectul QEMU, a facut un emulator de PC care ruleaza direct in browser prin JavaScript. Acum puteti chiar porni un Linux in browser daca aveti un browser cat de cat recent (Firefox 4, Chrome 11…).

Citeşte restul acestui articol »

Nu există comentarii

Motorul JavaScript din Firefox 4 avanseaza

Pentru prima data, motorul JavaScript din urmatoarea versiune de Firefox (4) a ajuns sa depaseasca Chrome si Safari la performante in cadrul testului SunSpider. In testele Mozilla, noul motor a terminat testul in 350.3 ms, pe cand Chrome l-a terminat in 356.5 ms si Safari in 369.7 ms. Rezultatul a fost inregistrat pentru arhitectura x86 (32bit). Pe x64 (64bit) mai au putin de lucru, rezultatele fiind totusi apropiate. Oricum, sunt vesti imbucuratoare :)

, ,

Nu există comentarii

Internet Explorer: nu folositi onchange pe controale de tip radio

Se pare ca Internet Explorer inclusiv versiunea 8 are o “mica” problema cu handlerul de “onchange” pe elementele input de tip radio, mai precis evenimentul onchange se manifesta doar atunci cand controlul pierde focusul. Deci cand se schimba valoarea nu apare evenimentul, in schimb cand dai click pe alt element din cadrul controlului radio se porneste evenimentul pentru valoarea precedenta. La fel se intampla si daca selectezi o valoare si apoi dai click altundeva in pagina. E clar ca nu e functionalitatea corecta :) Rezolvarea e destul de simpla si anume punerea handlerului pe onclick, desi logic ar fi sa functioneze asa cum trebuie onchange

Deci, in loc de:

<input type="radio" onchange="handler()" />

… trebuie

<input type="radio" onclick="handler()" />

Din pacate astfel se executa handlerul chiar daca nu se schimba valoarea, dar asta este, n-avem ce sa-i facem…

, ,

Nu există comentarii

Comportament ciudat al functiei JavaScript split in Internet Explorer

Am observat ca in Internet Explorer daca folosesti un delimitator RegEx pentru impartirea unui sir intr-un array, daca doua sau mai multe delimitatoare sunt adiacente, atunci Internet Explorer le trateaza ca un singur delimitator. Mai precis, avand sirul de mai jos:

var s = 'a|b|c|d|e||f|g|h';

…si avand bucata de cod

var tmp = s.split(/\|/);

… Internet Explorer creeaza un array de 8 elemente in loc sa creeze unul de 9 elemente avand pe pozitia a 6-a un sir gol.

In celelalte browsere comportamentul este cel normal. Solutia pentru Internet Explorer… Citeşte restul acestui articol »

,

Nu există comentarii

Internet Explorer: nu folositi DOM cand aveti de creeat tabele dinamice

Azi m-am lovit de o problema in Internet Explorer 8… intr-o aplicatie aveam o bucata care genera dinamic prin JavaScript un tabel si culmea (sau nu), in IE mergea ca porcu :) Este binecunoscut faptul ca IE are cel mai lent motor JavaScript de pe piata, si cum eu generam un tabel de cateva mii de linii, rularea respectivei bucati de cod ajungea sa ia secunde bune, daca nu chiar minute. Culmea ca in alte browsere totul mergea bine. Am sapat putintel si am aflat de pe QuirksMode ca IE sufera rau de tot atunci cand se creeaza tabele folosind metodele DOM (insertRow, insertCell). Asa ca mi-am schimbat metoda si am trecut la creearea tabelului intr-un string si adaugarea in pagina actualizand innerHTML-ul unui div si ce sa vezi… de la zeci de secunde am scazut timpul de rulare la max 5 secunde. E ceva… deci va sfatuiesc… daca aveti de facut un tabel in JavaScript… bagati-l intr-un string si inserati-l in pagina prin innerHTML.

, ,

Nu există comentarii