#javascript #jquery #debugging #internet-explorer-8
#javascript #jquery #отладка #internet-explorer-8
Вопрос:
Нет, это не лишняя запятая.
Вот фрагмент, который вызывает у меня проблему.
$(document).ready(function(){
$("div#slider").easySlider({
auto: false,
continuous: true,
nextId: "nextBtn",
prevId: "prevBtn"
});
$("div#slider-banner").easySlider({
auto: true,
continuous: true,
controlsShow: false
});
// <---------------------------------- Line 14
$("div#slider-photos").easySlider({
auto: true,
continuous: true,
controlsShow: false
});
$("#marquee").marquee({
scrollSpeed: 25,
pauseSpeed: 2000,
showSpeed: 850
});
});
СВЕДЕНИЯ ОБ ОШИБКЕ
User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; InfoPath.2; .NET CLR 1.1.4322; Tablet PC 2.0; OfficeLiveConnector.1.3; OfficeLivePatch.0.0)
Timestamp: Wed, 6 Apr 2011 15:20:42 UTC
Message: Expected identifier, string or number
Line: 14
Char: 5
Code: 0
Это происходит при случайных установках IE8, есть идеи?
Комментарии:
1. Вы неоднократно били по нему и выкрикивали непристойности? Обычно это работает при отладке IE. Теперь, возвращаясь к делу, вы пробовали удалять эти фрагменты кода? Зная IE и его понятность, можно было бы говорить о строке
14
плагина …2. да, и да, это фактически указывает это имя файла сразу после
Code: 0
3. Значит, удаление отдельных фрагментов кода (блоков
.easySlider()
и.marquee()
) не помогло? Какую версию jQuery вы используете?4. Похоже, что jQuery включен
1.5.2
. Вы пробовали последнюю версию: code.jquery.com/jquery-1.5.2.min.js ?5. Если вы удалили блоки, а проблема все еще существует, то проблема должна быть вне блоков. Используете ли вы IE8 ? Вы видели, где возникает ошибка при запуске инструментов разработчика?
Ответ №1:
Попробуйте заключить все свойства вашего объекта в (двойные) кавычки, вот так:
$("div#slider").easySlider({
'auto': false,
'continuous': true,
'nextId': "nextBtn",
'prevId': "prevBtn"
});
Комментарии:
1. Это была моя мысль — символ 5 совпадает с идентификаторами свойств. Я не думаю, что синтаксис неправильный для объектных литералов — но, возможно, одно из этих свойств имеет особое значение в нескольких из этих установок IE8? Или, может быть, существует проблема с пространством имен, которая появляется только в IE8 (возможно, только с режимом совместимости / без него)?
2. У меня была аналогичная проблема с доступом к свойству объекта через точечную нотацию внутри вложенной функции. Переключение на квадратные скобки решило проблему в IE8.
3. Я думаю, это может иметь какое-то отношение к ключам свойств, соответствующим ключевым словам? У меня была эта проблема со свойством объекта с именем
default
, и мне нужно было только заключить'default'
его в кавычки. Я думаю, что здесь IE сходит с ума от имени свойства объектаauto
.
Ответ №2:
В 2015 году. если вас все еще волнует совместимость с IE8 (более или менее), моя проблема с этой ошибкой проявлялась только на действующем сервере, но не на localhost (см. рисунок). И это вызвало ошибку IE8 таким образом, что она перешла в режим совместимости с IE7, что также является тем же отстой, что и режим Quirks.
В любом случае проблему не удалось решить ни с помощью одного из приведенных выше советов, и проблема заключалась в запятой в конце после перечисления некоторых параметров / опций.
Например:
$(document).ready(function(){
$('#selector').func({
rules: {
parameter1: {
option1: true,
option2: 1,
option3: 5
}
}, // <- this trailing comma is fatal to IE8
});
});
Комментарии:
1. Операция началась с явного указания «Нет, это не лишняя запятая». Это нужно проверить в первую очередь в IE 🙂
Ответ №3:
У меня была аналогичная проблема с привязкой attr к классу knockout. Случилось так, что атрибут class пришлось заключить в кавычки, как ‘class’.