morzel.net

.net, js, html, arduino, java... no rants or clickbaits.

Niebezpieczne połączenie onblur i disabled w IE6

Jeżeli masz coś wspólnego z aplikacjami webowymi to pewnie nerwowo reagujesz na widok IE6. Oto powód by znielubić tą przestarzałą (niestety wciąż popularną) wersję Internet Explorera jeszcze bardziej.

Załóżmy, że masz na formie kontrolki TextBox i Button. Zależy Ci na tym by zablokować przycisk gdy pole tekstowe jest puste. Piszesz więc taką prostą funkcję JavaScript:

function blokuj() {
    if (document.getElementById('TextBox1').value == '') {
        document.getElementById('Button1').disabled = true;
    }
}

i podpinasz ją do zdarzenia onblur (zdarzenie ma miejsce gdy kontrolka traci focus) TextBoxa... Pozornie wszystko działa jak należy - gdy pozostawisz pole tekstowe puste i przeskoczysz klawiszem Tab na inną kontrolkę przycisk zostanie zablokowany. Co jednak stanie się gdy trzymając kursor tekstowy w pustym okienku klikniesz bezpośrednio w przycisk? IE6 zawiesi się do momentu, aż przełączysz się na okno innego programu. By temu zaradzić możesz skorzystać ze zdarzenia onfocusout zamiast onblur jednak takie rozwiązanie nie zadziała poza IE. Można także zamiast kontolki Button użyć ImageButton albo bawić się ukrytym divem, z właściwością Z-index wyższą niż przycisk...

Kopiowanie kodu wraz z formatowaniem

Jeśli napotykasz czasem na konieczność zaprezentowania fragmentu kodu C# jako elementu strony WWW lub maila HTML na pewno docenisz plugin CopySourceAsHtml. Jest to dodatek do Visual Studio 2005, który rozszerza menu kontekstowe o opcje "Copy As HTML". Po jej wybraniu pokazuje się okno dialogowe umożliwiające ustawienie opcji formatowania. Gdy naciśniesz przycisk "OK" w schowku znajdzie się gotowy do wklejenia fragment kodu opakowany w tag div. Oto prosty przykład możliwości tego pluginu:

   26     public int Test(int x)

   27     {

   28         int score = 0;

   29         for (int i = 0; i < x; i++)

   30         {

   31             score += Math.Cos(x + int.MaxValue);

   32         }

   33     }

Dodatek ten można pobrać za darmo z tej strony.

L-systemy. Tworzenie form roślinnych z wykorzystaniem System.Drawing.

Artykuł w prosty sposób opisuje ciekawe zganienie algorytmu wzrostu. Czyni to na przykładzie tworzenia realistycznie wyglądających form roślinnych, rysowanych w oparciu o klasy z przestrzeni nazw System.Drawing...

Wersja: 1.1 (06.2007, poprawki 07.2007)
Poziom trudności: średniozaawansowany
Uwagi: Artykuł ten pisałem w ramach nauki .NET Framework jako pracę uczestniczącą w konkursie portalu CodeGuru.pl (tekst zajął pierwsze miejsce w czerwcu 2007 r.).

Artykuł w PDF (v1.1 - 07.2007):
http://morzel.net/download/lsystemy_art.pdf

Artykuł na CodeGuru.pl (v1.0 - 06.2007):
http://www.codeguru.pl/article-703.aspx

Załączony kod (C#, VS 2005):
http://morzel.net/download/lsystemy_src.zip

Wstęp do wyrażeń regularnych na platformie .NET.

Celem artykułu jest zapoznanie Czytelnika z podstawowymi elementami składni wyrażeń regularnych oraz sposobami ich wykorzystania na platformie .NET. Postaram się zachęcić tych, którzy jeszcze nie mieli do czynienia z regexami do poznania tego potężnego narzędzia.

Wersja: 1.1 (05.2007, poprawki 07.2007)
Poziom trudności: początkujący
Uwagi: Artykuł ten pisałem w ramach nauki .NET Framework jako pracę uczestniczącą w konkursie portalu CodeGuru.pl (tekst zajął drugie miejsce w maju 2007 r.).

Artykuł w PDF (v1.1 – 07.2007):
http://morzel.net/download/wdre_art.pdf

Artykuł na CodeGuru.pl (v1.0 – 05.2007):
http://www.codeguru.pl/article-696.aspx

Załączony kod (C#, VS 2005):
http://morzel.net/download/wdre_src.zip