powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Осторожно: IE и jQuery 1.8.0
6 сообщений из 6, страница 1 из 1
Осторожно: IE и jQuery 1.8.0
    #37919119
Фотография iConst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем.

Столкнулся с такой лажей: в проекте вдруг IE9 стал выдавать ошибку в такой конструкции:
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
MyObj.Sub.SomeModule = (function(m, $)
{
    $(function()
    {
        init(); // -> Ошибка: Предполагается наличие объекта
    });

    var init = function()
    {
		....
    }
    ...
    return m;
})(MyObj.Sub.SomeModule || {}, jQuery)

Причем во всех ранее прекрасно пахавших модулях!
Одновременно, IE8 это все запросто переваривает. Остальные браузеры тоже молчат.

Причиной тому, как оказалось - подключение новой библиотеки jQuery 1.8.0 . Ранее была 1.7.2 . Купились на фиксы, быстродействие и т.п.
Проявляется это только если jQuery подключен через ScriptManager.

Странное поведение.
Пока есть два пути решения - откатить на прежний жквери или подключать новый стандартным способом в хедере. Подключение практикуем из CDN (локально - та-же фигня).

Есть мысли?

Перевернув мир - оглянись, может перевернулся ты сам?!
...
Рейтинг: 0 / 0
Осторожно: IE и jQuery 1.8.0
    #37919190
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iConst,

объяви init() как function declaration
Код: javascript
1.
2.
3.
function init() {
	...
}



подозреваю, что на момент вызова $(function() {...}); DOM уже готов, и функция сразу же вызывается, при этом init ещё undefined.
Возможно, в 1.7.2 вызов откладывался.

Но это всё домыслы, не более.
...
Рейтинг: 0 / 0
Осторожно: IE и jQuery 1.8.0
    #37919361
Фотография iConst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный МечiConst,

объяви init() как function declaration
Код: javascript
1.
2.
3.
function init() {
	...
}



подозреваю, что на момент вызова $(function() {...}); DOM уже готов, и функция сразу же вызывается, при этом init ещё undefined.
Возможно, в 1.7.2 вызов откладывался.

Но это всё домыслы, не более.Забавно, но действительно прокатило! Уже давно и часто использую такую запись, не особо задумываясь. Спасибо!

Только это не решает проблему конструкции методов объекта:
Код: javascript
1.
2.
obj.meth1 = function(){...}
...

коих много - На них спотыкается...
От, засада!
В общем, как грится: " Лучшее - враг хорошего! ", откатились назад... :)
...
Рейтинг: 0 / 0
Осторожно: IE и jQuery 1.8.0
    #37919493
Фотография Яростный Меч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iConstТолько это не решает проблему конструкции методов объекта:
Код: javascript
1.
2.
obj.meth1 = function(){...}
...

как вариант, можно $(function() {...}); ставить в конец метода, перед return, чтобы все необходимые объекты были созданы, даже если обработчик вызовется напрямую.
ему всё равно нет никакого смысла быть вначале.
...
Рейтинг: 0 / 0
Осторожно: IE и jQuery 1.8.0
    #37919544
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iConst, попробуй инициализировать init до конструкции $(function() { ... });
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
MyObj.Sub.SomeModule = (function(m, $)
{
    var init = function()
    {
		....
    }

    $(function()
    {
        init(); // -> Ошибка: Предполагается наличие объекта
    });

    ...
    return m;
})(MyObj.Sub.SomeModule || {}, jQuery)
...
Рейтинг: 0 / 0
Осторожно: IE и jQuery 1.8.0
    #37920357
Фотография iConst
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Яростный Меч...
как вариант, можно $(function() {...}); ставить в конец метода, перед return, чтобы все необходимые объекты были созданы, даже если обработчик вызовется напрямую.
ему всё равно нет никакого смысла быть вначале.
bazileiConst, попробуй инициализировать init до конструкции $(function() { ... });
...
Яростный Меч , bazile
Это все понятно, но не выход - не перелопачивать-же весь проект ради этого... Ведь использование, как гласит жкверевская дока,
Код: javascript
1.
$(function() { ... })

равнозначно
Код: javascript
1.
$(document).ready(function() { ... })

и вызывается после того, как весь документ будет загружен. Потому там и присутствует... До сего часа не было проблем.
Я склоняюсь к мысли - это псевдо-косяк новой версии жквери : творение МС как всегда чудит. Надеюсь - пофиксят. Опять-же, не забывайте - без ScriptManager -а все ОК.

Яростный Меч , bazile , спасибо за участие.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Осторожно: IE и jQuery 1.8.0
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]