ÐÑма такава боза като 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) не Ñе чупи. Шибана мръÑтна групоÑÑ‚.