Почему IE8 не распознает type="application/javascript" в теге скрипта?
Я разработал HTML-страницу, которая использует jQuery и Ajax. У меня были следующие строки в моем <head>
тег:
<script language="javascript" type="application/javascript" src="script/jquery.js"></script>
<script language="javascript" type="application/javascript">
function someFunction() {
some code;
}
</script>
...
later - down in the body tag:
<a href="javascript:someFunction();">click here</a>
Он отлично работал в FF и Chrome, но бросил "Ожидаемый объект" в IE8, как только я щелкнул ссылку. Даже если Script Debugger включен, он не достигнет первой строки функции.
Я попытался переключиться в режим IE7 или режим совместимости IE8 - безрезультатно.
Я повезло и нашел вопрос через Google, где кто-то предложил изменить type
в <script>
тег к "text/javascript"
и теперь он работает во всех 3 браузерах.
У меня вопрос: что я сделал не так? Является "text/javascript"
лучше чем "application/javascript"
или есть лучшее (== более правильное) решение моей проблемы?
2 ответа
"text/javascript" - это единственный тип, который поддерживается всеми тремя браузерами. Однако на самом деле вам не нужно указывать тип. Атрибут type тега script по умолчанию будет иметь значение "text/javascript", если не указано иное. Как это повлияет на валидацию, я не уверен. Но действительно ли это так важно?
Простой ответ заключается в том, что IE не поддерживает значение типа application/javascript. RFC 4329, который рекомендует это, очевидно, появился после выхода IE6, я думаю, разработчики MS не чувствовали необходимости даже поддерживать тип MIME.