Zrobiłem nowy system rejestracji dla kinomaniaka. Zamysł jest taki, iż po po kliknięciu pokawia się formularz rejestracji za pomocą AJAXa. Wszystko jest ok, działa dobrze we wszystkich przeglądarkach. Na koniec pokusiłem się jeszcze o kompatybilność z IE. I od razu od pierwszej minuty mur oporowy. Po oloło 2/3 dnia udało mi się rozgraniczcyc niedziałanie do 2 głównych problemów:
- IE nie czyta <script> w innerHTML
- IE nie czyta <form> w innerHTML
Po kolejnej godzinie szukania udało mi się znaleźć odpowiedź na pierwsze pytanie. Do skryptu wystarczy dodać parametr defer=”defer”. Dobra, tyle jeszcze mogę zrobić. Może i użytkownicy tej pięknej pseudoprzeglądarki będą mogli podziwiać nowy interface :].
A jednak nie. Jedynym sposobem, by w IE dynamicznie dodać form, to jest popraz createElement(”form”); Tak więc - żegnaj IE.
Prosty wniosek: aby napisać cokolwiek pod IE, to trzeba być masochistą.
PS. Jeśli jednak ktoś sposób jak dodać <form> poprzez innerHTML w IE, to go chętnie poznam
UPDATE: A jednak się da
Oczywiście IE musi po swojemu, odwrotnie niż reszta. Działający fragment kodu prezentuje się następująco:
if(navigator.userAgent.match(/IE/)) {
thisObj.appendChild(div);
$(’superbox_site’).innerHTML = obj.responseText;
} else {
div.innerHTML = obj.responseText;
thisObj.appendChild(div);
}
Różnica jest po prostu taka, że IE musi dostać tekst po dodaniu elemntu do DOM, natomiast pozostałe przeglądarki odwrotnie.