Nemám rád javascript

Tomáš Herceg       28. 7. 2008       Offtopic       7019 zobrazení

Tohle je další článek z cyklu nadávám na všechno na světě, tentokrát to je javascript. Protože jsem slíbil, že se pokusím udělat lepší fóra zde na vbnet.cz, zjistil jsem, že pro psaní příspěvků by se hodilo udělat WYSIWYG editor. Takových editorů je celá řada, mě se z nich ale nelíbí ani jeden. Ony toho totiž umí strašně moc a jejich javascriptové knihovny zabírají desítky až stovky kilobajtů kódu.

Problém je v tom, že přehnaná kreativita u většiny uživatelů je spíše na škodu, takže pokud mají naše fóra být seriózní, nesmíme povolit změnu velikosti, typů a barev písma, smajlíky, milion obrázků, tabulky a mnoho dalšího, stačí základní možnosti formátování a hlavně lepší zvýrazňování kódu a IntelliSense (a tyto specifické funkce neumí žádný editor). Než abych rozšiřoval nějaký giganticky komplexní editor, u kterém nevím, jak co funguje, řekl jsem si, že si radši napíšu svůj. Ono by to nemělo být tak těžké.

Potíž je v tom, že veškerá logika na klientovi se dá psát pouze v javascriptu. Obecně nemám rád dynamické programovací jazyky, jako právě javascript nebo PHP. Jsou pomalé, paměťově náročnější a nedá se pro ně udělat rozumná a všude dostupná IntelliSense. To je pro mě problém, obzvlášť v případě, kdy si každý prohlížeč implementuje standardy po svém.

Ono to ani jinak nemůže být, protože většina těchhle odlišností vznikla v době, kdy oficiální standardy teprve vznikaly. Chyby byly na všech stranách, často to vypadalo tak, že Microsoft něco vymyslel a naimplementoval do IE, konsorcium W3C to převzalo, trochu pozměnilo a prohlásilo za standard onu pozměněnou verzi, takže to v Microsoftích prohlížečích to pak standardu neodpovídalo. Takhle to bylo například s technologií AJAX.

Co se týče praktických zkušeností, už mi to funguje ve všech třech nejpoužívanějších prohlížečích, ale co s tím bylo práce. Napsal jsem jádro WYSIWYSG editoru podle dokumentace na MSDN, takže to fungovalo v Internet Exploreru. Nějakým zázrakem to fungovalo také v Opeře, protože ta, přestože podporuj standardy, se většinou snaží naimplementovat jak oficiální, tak i Microsoftí verzi. V tomto případě se jí to podařilo.

Největší problém byl samozřejmě s Firefoxem, nevím, jestli je to tím, že na něj nejsem zvyklý, ale pořád s ním byly nějaké problémy. Do okna, kterému jsem nastavil vlastnost designMode, se pořád nedalo psát, což je špatně. Pak jsem zjistil jednu šílenost:

         // tohle funguje
document.getElementById(this.ControlId).contentWindow.document.designMode = 'on';

// tohle nefunguje !!!
var doc = document.getElementById(this.ControlId).contentWindow.document;
doc.designMode =
'on';

To je skoro jako kdyby se elementy v javascriptu nechovaly jako objekty, ale jako hodnotou předávané entity. V IE a Opeře fungovaly obě verze, ve FF jen ta první. Není to nějaký šílený bug, nebo to takhle má být? Anebo mám chybu ještě jinde? Fakt nevím.

Jinak nejlepším prohlížečem pro mě je Internet Explorer 7, dá se v něm totiž nádherně debugovat javascript pomocí Visual Studia 2008. Firebug nebo Opera Developer Tools jsou proti této kombinaci laciné náhražky, které pořádně nefungují (Firebug mi polovinu breakpointů vesele ignoroval, přitom kód pod ním se vykonal normálně).

Dobrá zpráva ale je, že WYSIWYG editor na vbnetu bude, doufám, že se mi podaří udělat i tu IntelliSense. Jen kdyby se to dalo pořádně odladit v té Opeře a FF, to by bylo.

 

hodnocení článku

1 bodů / 1 hlasů       Hodnotit mohou jen registrované uživatelé.

 

Nový příspěvek

 

Diskuse: Nemám rád javascript

Můžu jen šťournout? Jenom bych rád věděl co dělá IE7 mezi kliknutím na tlačítko nové záložky a vytvořením nové (i prázdné!) záložky? Trvá to strašně dlouho (ve FF je vytvořena nová záložka hned).

Ano, máte pravdu, nemám IE rád :-D

Ale nikomu neříkám ať ho nepoužívá, to ne. Každý má právo volby :)

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Diskuse: Nemám rád javascript

Není WYSIWYG editor pro jednoduché formátování v diskuzích přeci jen kanón na vrabce? Proč nevyužít nějaký k tomu určený systém (BBCode, Textile)? Takové řešení může být velice efektivní.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

No, on se mi ten editor bude hodit v mnoha dalších projektech, a navíc bych potřeboval, aby hezky podporoval zdrojáky v běžných jazycích, které zde používáme, tj. VB.NET a C# a XML a možná i nějakou jednoduchou IntelliSense - když chci odpovědět, v 99% případů si nepamatuju, jak se ta funkce jmenovala a musím pouště Visual Studio. S IntelliSense udělanou pomocí javascriptu a AJAXu to bude pohodlnější. Je to dost šílené, ale když už javascript dneska zneužívá kde kdo...

Nějaký hotový systém bych jistě použít mohl, ale než bych zjistil, jak funguje, a mohl si ho pořádně upravit, tak si raději napíšu svůj vlastní, který využiji i na dalších místech, byť i trochu poupravený.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Chápu, vlastní řešení bývá občas nejlepší cesta. Zvýrazňování zdrojáků mě už pěknou dobu trápí, nikde žádný použitelný řešení a přitom by to bylo dost třeba. Rozhodl jsem se tedy něco stvořit, ale netroufám si na vlastní generickej parser (i když kdo ví), takže budu muset z něčeho vyjít. Uvidím jak to dopadne.

Intellisense jsem už komentoval (jako anonym), je to zajímavej nápad a jestli se to povede ...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Diskuse: Nemám rád javascript

Ačkoliv jsem zaputilým zastánce Firefoxu, v tomhle s tebou musím naprosto souhlasit. Taky jsem kdysi byl tak naivní, že jsem si myslel, že WYSIWYG editor stvořím. Ono se mi to i podařilo, ale samozřejmě to ve FF nešlo, šlo to pouze v IE (Operu jsem netestoval, ta mě moc nezajímá). A to jsem to měl ulehčené tím, že jsem se nepachtil s Intellisense. Jelikož nejsem zdaleka dobrý programátor jako Ty, nebyl jsem s výsledkem své práce spokojen a tak jsem to vzdal (v mém případě bylo možné nahradit webové UI softwarem, takže to dopadlo tak, že jsem aplikaci realizoval ve VB). Tvám článek mi tedy přímo mluvíš z duše.

Nakonec bych Ti ale chtěl popřát ať se Ti dál daří, to je v zájmu nás všech a věřím že zlatou střední cestu najdeš. Hodně štěstí :)

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Pokud jsi WYSIWYG dělal pomocí contenteditable, tak to opravdu ve FF nepůjde. Nicméně FF umí, stejně jako všechny ostatní prohlížečky, designMode. Problémy jsem měl s něčím jiným, tohle fungovalo dobře. Fascinuje mě jenom to divné chování FF, jakmile si objekct document uložím do proměnné nebo do nějaké proměnné v objektu, už to nefunguje. Fakticky to nechápu, ostatní prohlížeče s tím problém nemají. IntelliSense jsem ještě dělat nezačal, teď si zatím hraju se samotnou WYSIWYG editací. Tam mi chybí vkládání obrázků a odkazů a rozpoznání, jestli prohlížeč WYSIWYG editaci proporuje nebo ne.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Hrál jsem si i s DesignMode, ale nakonec jsem stejně v zájmu svého zdraví projekt uzavřel.

Já jsem jako programátor na JavaScriptu vyrůstal a pracoval jsem s ním asi 3 roky a máš pravdu, za tu dobu jsem se s podobným problémem jako ty nesetkal. Ovšem nutno podotknout, že jsem svoje skripty psal vždy pouze pro IE. JavaScript ve FireFoxu je zkrátka divný a imho pomalý.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.

Nyní zakládáte pod článkem nové diskusní vlákno.
Pokud chcete reagovat na jiný příspěvek, klikněte na tlačítko "Odpovědět" u některého diskusního příspěvku.

Nyní odpovídáte na příspěvek pod článkem. Nebo chcete raději založit nové vlákno?

 

  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:  
Heslo:  

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback