Internet Explorer, jQuery, AJAX … егати комбинацията
Няма такава боза като Internet Explorer. Просто няма. Супер непредсказуемо се дъни на най-неочакваните места, което прави дебъгването истински кошмар. Ето последното ми преживяване: работя върху интерфейс, който е супер тежко натоварен със всякакви AJAX и DHTML красоти, и който е много важно да работи навсякъде. Най-големия помощник в тази задача е jQuery, който работи супер стабилно навсякъде, и може да ти спести по-голямата част от cross-compatibility проблемите при “мултиплатформеността” да се работе с много браузъри. За съжаление, това не винаги помага. При рутинна проверка за това как върви интерфейса под IE6, излиза следната грешка:
Could not complete the operation due to error 80020101
При проверка с IE7, отново на същото място от тестовете излиза същата грешка. Така, супер описателно съобщение, нали … Преравям интернета да търся хора с моя проблем, и да видя как може да се реши, обаче не намерих нищо — само оплаквания, и разни хленчения по форумите. Ами като не мога да го реша проблема, да пробвам да го заобиколя, а ? Грешката се проявява, когато jQuery получи като резултат от AJAX заявка HTML, който след това се инжектира в кода. Всичко това се прави супер кадърно от jQuery, като кода който ще се инжектира се проверя за <script> блокове, които се интерпретират (т.е. eval()-ват се), така че всичко работи все едно че кода си е бил там още при зареждането на страницата. Първо проверих дали кода е валиден (`щото IE има навика да забива при определина счепина структура), а длед това започнах да махам едно по едно нещата от кода и да гледам кога няма да се появи грешката. За мой късмет махнах <script>-овете първо, и след като видях, че проблема не е от викането на външни *.js файлове, оказа се че именно eval()-натите блокове чупят нещата. Тестването обаче ми разгонва фамилията, защото се скъсах да цъкам докато стане време да се появи грешката. Както и да е, видях какво предизвиква проблема, и реших да тествам “контролно” дали IE по принцип имат проблеми с eval()-ването от AJAX отговори. Познайте … няма! Сега, познайте къде е проблема … в коментарите! Удивително, а ? Значи, от дълбока древност, при писането на JavaScript в inline блокове в кода винаги слагам HTML коментари. Верно, че главно античните браузъри имаха проблеми с показването на JavaScript-а, и заради това се слагат тези коментари. Има и други причини, но те изглеждат много невероятни — като например някой да напише такъв CSS:
script {display: block;}
Както и да е. Имено тези коментари оцапват положението. Пример - ето това не работи:
<script type="text/javascript"><!--// alert(123); //--></script>
а ето това работи:
<script type="text/javascript"> alert(123); </script>
Правете си изводите. Този тъп проблем го има не само в IE6, но и в IE7 (интересно има ли го в IE8). Никой друг браузър (Firfox 2, Firefox 3, Safari 3) не се чупи. Шибана мръстна групост.

