Кажется, что эту проблему легко решить, но она надирает мне задницу.
Следующий простой пример выдает ошибку в IE9. Я использовал страницу разработчика IE9 для мониторинга загрузки сети, и похоже, что IE загружает и выполняет сценарий тела до загрузки/оценки включенного javascript.
Я пробовал все различные приемы, найденные при поиске ответов, включая добавление <meta charset="UTF-8" />
и <meta http-equiv="x-ua-compatible" content="IE8"/>
<html>
<head>
<title>Demo of IE suckiness</title>
<script type='text/javascript'
src='http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js'></script>
</head>
<body>
This works in every browser but not IE9. IE gives the error:
<pre>
Line: 9
Error: The value of the property '$' is null or undefined, not a Function object
</pre>
<script type="text/javascript" defer="defer">
$(document).ready(function(){
alert("Must not be IE");
});
</script>
</body>
</html>
У меня есть обходной путь. Переместите готовый скрипт в <body onload="ready()">
, но я не могу поверить, что это не работает для IE9, я, должно быть, делаю что-то не так и просто не вижу этого.