Ответ 1
Напишите "var" перед переменными, когда вы их определяете. IE8 умирает, когда нет "var".
Я пытаюсь заставить мои функции jQuery работать в IE8. Я загружаю библиотеку с серверов Google (http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js).
$(function(){})
никогда не вызывается. Вместо этого я получаю сообщение об ошибке Object expected
. Я открыл разработчика и запустил typeof $
в консоли, и он появился как undefined
.
Я пробовал переходить на другие сайты, которые, как я знаю, используют jQuery (jquery.com), и все они работают, есть ли что-то, что я могу здесь пропустить?
Напишите "var" перед переменными, когда вы их определяете. IE8 умирает, когда нет "var".
Исправление:
Проверьте тег include script, используя
type="application/javascript" src="/path/to/jquery"
измените на
type="text/javascript" src="/path/to/jquery"
У меня была аналогичная проблема. Вещи работали в IE6, Firefox и IE8, работающие в режиме совместимости с IE7; но не в "нормальном" IE8. Моим решением было поместить этот код в заголовок
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
Что касается того, почему jquery не работает в IE8, я неясен.
Решением является обновление до последней версии jQuery. У меня была такая же проблема, и она была повышена до 1.4.2, и все это отлично работает в IE8.
Кажется, он полностью совместим со всеми материалами jQuery 1.3.2, которые я сделал, поэтому никаких жалоб здесь нет.
У меня была эта проблема, и я не пробовал решения, упомянутые здесь.
В конце концов, я понял, что я связываюсь с версией в формате CDN для Google script, используя http URL
, а страница, встраивающая script, была https page
.
Это привело к тому, что IE не загружал jquery (он запрашивает у пользователя, хотят ли они загружать только защищенный контент). Изменение URL-адреса Google CDN для использования схемы https устранило проблему для меня.
Некоторые люди, спотыкаясь об этом сообщении, могут получить эту проблему с 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]-->
jQuery не загружается, это маловероятно для IE8. Проверьте путь на вашем jQuery. выражение. Или еще лучше, используйте следующее для CDN:
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.3.1/jquery.min.js">
</script>
Если вы используете HTTPS на своем сайте, вам нужно будет загрузить библиотеку jQuery из https-сервера Googles. Попробуй это: https://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js (или последний https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js)
Я исправлял шаблон, созданный кем-то другим, который забыл включить doctype.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Если вы не объявляете, что doctype
IE8 выполняет странные действия в режиме Quirks.
Событие onload не всегда работает на IE7/8 в <head> ... </head>
Вы можете заставить его, добавив onload script в конце своей страницы перед тегом, как показано ниже.
<script>
window.onload();
</script>
</body>
Ошибка Object expected
возникает из-за того, что JQuery не загружен. Это происходит из-за безопасности браузера (обычно IE), который не позволяет выполнять внешний исходный код javascript. Вы можете исправить эту проблему:
ИЛИ
Я предпочитаю первое решение.
У меня были те же проблемы.
Я решил проверить, что IE8 неправильно настроен для доступа к URL-адресу SRC.
Я изменил это, он работает правильно.
Возможно, вы вставляете два скрипта, это должно быть работа.
<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>
Это исправило мою проблему в 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, если есть проблемы!
Возможно, вы включили inPrivate Filtering?
У меня была такая же проблема. Решение заключалось в том, чтобы добавить ссылку на файл JQuery в качестве надежного сайта в IE.
Я думаю, что у вас такая же проблема, как и у меня:
Message: Permission denied
Line: 13
Char: 27021
Code: 0
URI: http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.3.2.min.js
Из-за ссылки на перекрестный домен. Попробуйте разместить jquery.js в том же домене.
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, пытаясь найти решение этой проблемы.
Это не отправлено на сайт
Короче говоря, это из-за механизма синтаксического анализа 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 снова заставила нас публиковать материалы на форумах.;)
Решение в моем случае состояло в том, чтобы удалить любые специальные символы из URL-адреса, к которому вы пытаетесь получить доступ. У меня была тильда (~) и символ процента там, и вызов $.get() завершился неудачно.