wtorek, listopada 18, 2008

Zasada numer 1: sprawdzaj oczywiste

Zasada ta ma 2 końce ;-) Koniec bardziej oczywisty jest taki, że często to co jest oczywiste może okazać się błędne. Dobrze więc wykazać się sceptycyzmem i sprawdzić czy rzeczywiście jest tak jak jest.
Drugi koniec wynika w pewien sposób z pierwszego ;-)

Ostatnio w pracy dodawałem do naszej aplikacji edytor HTML do wysyłania maili. Fajna zabawa, ale dzięki różnemu podejściu do standardów każda z przeglądarek miała inne wymagania. Najtrudniejsza stała się współpraca z ramką w której użytkownik może pisać, i do której należy ładować szablony. Z różnych powodów robić to muszę ze strony mającej w sobie IFRAME'a z edytorkiem.... i tu zaczęły się kłopoty ;-)
Użycie ramka.document.innerHTML [gdzie ramka to element naszej ramki] działa w większości przypadków, ale wymaga by strona w ramce została załadowana... Na niektórych przeglądarkach można to przeskoczyć przy użyciu ramka.contentWindow.document.innerHTML ale też nie zawsze.
Oczywistym rozwiązaniem po spostrzeżeniu tego problemu jest pomysł by użyć takiego kodu:

// ramka.document.clear(); - akurat clear nie działa ;-)
ramka.document.close();
ramka.document.open();
ramka.document.write(....);

Ale po spostrzeżeniu, że ramka.document.innerHTML może nie istnieć pomysł z pisaniem do elementu document wydaje się bez sensu. Oczywiste jest, że to nie będzie działać. Za prost jest........

Ale działa ;-)

Gdy na to wpadłem [po 3 sekundach od zauważenia, że pisanie do innerHTML nie działa] nawet nie próbowałem jak to działa uznając za oczywiste, że nie działa i zacząłem kombinować... po 2 czy 3 podejściach odkryłem jednak że lepiej jednak sprawdzić i wtedy okazało się, że jednak takie rozwiązanie działa ;-)

Dlatego zasada na dziś: sprawdzać oczywiste!


Podobne postybeta
Ściana, czyli rozbijam się na onclick ;-)
IE suxx ;-)
ToDo od Trello jako "oddzielna aplikacja"
Czemu strony only for IE są złe.
Sudoku - rozwiązanie doskonałe ;p