Проблема jQuery в Internet Explorer 8

Я пытаюсь заставить мои функции jQuery работать в IE8. Я загружаю библиотеку с серверов Google (http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js).

$(function(){}) никогда не вызывается. Вместо этого я получаю сообщение об ошибке Object expected. Я открыл разработчика и запустил typeof $ в консоли, и он появился как undefined.

Я пробовал переходить на другие сайты, которые, как я знаю, используют jQuery (jquery.com), и все они работают, есть ли что-то, что я могу здесь пропустить?

Ответ 1

Напишите "var" перед переменными, когда вы их определяете. IE8 умирает, когда нет "var".

Ответ 2

Исправление:

Проверьте тег include script, используя

type="application/javascript" src="/path/to/jquery" 

измените на

type="text/javascript" src="/path/to/jquery" 

Ответ 3

У меня была аналогичная проблема. Вещи работали в IE6, Firefox и IE8, работающие в режиме совместимости с IE7; но не в "нормальном" IE8. Моим решением было поместить этот код в заголовок

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" /> 

Что касается того, почему jquery не работает в IE8, я неясен.

Ответ 4

Решением является обновление до последней версии jQuery. У меня была такая же проблема, и она была повышена до 1.4.2, и все это отлично работает в IE8.

Кажется, он полностью совместим со всеми материалами jQuery 1.3.2, которые я сделал, поэтому никаких жалоб здесь нет.

Ответ 5

У меня была эта проблема, и я не пробовал решения, упомянутые здесь.

В конце концов, я понял, что я связываюсь с версией в формате CDN для Google script, используя http URL, а страница, встраивающая script, была https page.

Это привело к тому, что IE не загружал jquery (он запрашивает у пользователя, хотят ли они загружать только защищенный контент). Изменение URL-адреса Google CDN для использования схемы https устранило проблему для меня.

Ответ 6

Некоторые люди, спотыкаясь об этом сообщении, могут получить эту проблему с jquery и IE8, потому что они используют >= jQuery v2. Используйте этот код:

<!--[if lt IE 9]>
    <script src="jquery-1.9.0.js"></script>
<![endif]-->
<!--[if gte IE 9]><!-->
    <script src="jquery-2.0.0.js"></script>
<!--<![endif]-->

Ответ 7

jQuery не загружается, это маловероятно для IE8. Проверьте путь на вашем jQuery. выражение. Или еще лучше, используйте следующее для CDN:

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js">
</script>

Ответ 9

Я исправлял шаблон, созданный кем-то другим, который забыл включить doctype.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Если вы не объявляете, что doctype IE8 выполняет странные действия в режиме Quirks.

Ответ 10

Событие onload не всегда работает на IE7/8 в <head> ... </head>

Вы можете заставить его, добавив onload script в конце своей страницы перед тегом, как показано ниже.

  <script>
    window.onload();
  </script>
</body>

Ответ 11

Ошибка Object expected возникает из-за того, что JQuery не загружен. Это происходит из-за безопасности браузера (обычно IE), который не позволяет выполнять внешний исходный код javascript. Вы можете исправить эту проблему:

  • 1: изменение уровня безопасности браузера, позволяющего выполнять внешний код javascript. Вы можете найти как это сделать здесь

ИЛИ

  • 2: скопируйте исходный код jquery на свою веб-страницу, чтобы он не считался внешним script.

Я предпочитаю первое решение.

Ответ 12

У меня были те же проблемы.

Я решил проверить, что IE8 неправильно настроен для доступа к URL-адресу SRC.

Я изменил это, он работает правильно.

Ответ 13

Возможно, вы вставляете два скрипта, это должно быть работа.

<script src="http://ie7-js.googlecode.com/svn/version/2.1(beta4)/IE8.js"></script>  
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js">/script> 

Ответ 14

Это исправило мою проблему в IE8:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>

Запустив на localhost, мне пришлось изменить https:// на http://

Если я попытаюсь перейти к защищенной ссылке, я получаю Internet Explorer не может отображать веб-страницу дружественное предупреждение.

Всегда старайтесь сначала загружать текстовые скрипты в browswer, если есть проблемы!

Ответ 16

У меня была такая же проблема. Решение заключалось в том, чтобы добавить ссылку на файл JQuery в качестве надежного сайта в IE.

Ответ 17

Я думаю, что у вас такая же проблема, как и у меня:

Message: Permission denied
Line: 13
Char: 27021
Code: 0
URI: http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.3.2.min.js

Из-за ссылки на перекрестный домен. Попробуйте разместить jquery.js в том же домене.

Ответ 18

OK! Я знаю, что загрузка jQuery. Я знаю, что jQuery.textshadow.js загружается. Я могу найти оба сценария в Инструментах разработчика.

Странная часть: этот код работает в области содержимого, но не в баннере. Даже с выделенным fixIE.css. И он работает, когда я вставляю css inline. (Это, конечно, беспорядок FireFox.)

Я даже поставил условный IE-интервал вокруг текстового поля в баннере без везения.

Я не нашел разницы и имел те же ошибки как в jquery-1.4.2.min.js, так и в jquery-1.2.6.min.js. jQuery.textshadow.js был загружен с сайта jQuery, пытаясь найти решение этой проблемы.

Это не отправлено на сайт

Ответ 19

Короче говоря, это из-за механизма синтаксического анализа IE8.

Угадайте, почему Microsoft не работает с новыми тегами HTML5 (например, "раздел" )? Это потому, что MS решила, что они не будут использовать регулярный синтаксический анализ XML, как и весь остальной мир. Да, это правильно - они сделали тонну пропаганды по XML, но, в конце концов, они вернулись к "глупым" синтаксическим анализаторам, которые ищут "известные теги" и вовлекают вещи, когда появляется что-то новое.

То же самое касается IE8 и проблемы jquery с "load", "get" и "post". Опять же, Microsoft решила "идти своим путем" с версией 8. Надеясь, что они решают (d) это в IE9, единственной текущей опцией является отказ от синтаксического анализа IE7 с помощью <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />.

Ну что ж... какой сюрприз, что Microsoft снова заставила нас публиковать материалы на форумах.;)

Ответ 20

Решение в моем случае состояло в том, чтобы удалить любые специальные символы из URL-адреса, к которому вы пытаетесь получить доступ. У меня была тильда (~) и символ процента там, и вызов $.get() завершился неудачно.