Почему 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.

Другие вопросы по тегам