Короче есть блок, который подгружается ассинхронно (вроде счетчиков) и его содержимое не отследить сразу.
Допустим в итоге в блоке будет SPAN с id=green
И если бы блок был обычный, мой код document.ready...#green.hide() работал бы (написал схематично).
Но блок ассинхронно грузится и обычно документ готов раньше, чем содержимое блока.
Как в JQuery мне обновить ну или..эмм..пересканировать содержимое блока перед работой с ним?
[Ответ]
alemiks 21:31 15.12.2011
Если событие load() не поможет, то, наверное, только по таймеру сканить на наличие элемента
[Ответ]
silly 22:38 15.12.2011
Ну как обычно:
Код:
var a = {
toString: function() {
return 'a';
}
}
var b = {
toString: function() {
return 'b';
}
}
a.b = b;
b.a = a;
var walk = (function() {
var btdt = [];
return function(obj) {
btdt.push(obj);
print(obj);
for (var p in obj) {
if (typeof(obj[p]) == 'object' && btdt.indexOf(obj[p]) == -1) {
walk(obj[p]);
}
}
}
})();
walk(a);
Дополнение:
Код:
// альтернативный, более корректный вариант
function walk(obj, btdt) {
btdt = btdt || [];
btdt.push(obj);
print(obj);
for (var p in obj) {
if (typeof(obj[p]) == 'object' && btdt.indexOf(obj[p]) == -1) {
walk(obj[p], btdt);
}
}
}
AlexanderSergeev, тебе чего надо в итоге? постановку задачи сделай для начала
а то - абстрактный конь в вакууме
[Ответ]
DRON-ANARCHY 10:05 16.12.2011
Сообщение от Vital_N:
а то - абстрактный конь в вакууме
Это у него фишка такая. Все темы так выглядят [Ответ]
AlexanderSergeev 10:08 16.12.2011
Дрон, мне как обычно кажется, что куда ж еще точнее)))
Еще раз попытаюсь сформулировать.
Есть скрипт, который производит некоторые действия с содержимым "блока А". Написан на jQuery.
Если вручную (на чистом html) прописать "блок А" со всем его содердимым, то мой скрипт с ним работает на ура.
Проблема в том, что содержимое "блока А", в рабочем варианте сайта, подгружается ассинхронно (типа счетчиков аналитика, яметрики и тп). Мой скрипт не пашет в связи с тем, что даже после полной загрузки страницы (document.onready), не факт что содержимое "блока А" тоже готово.
Пока писал понял, что врядли будет решение разумнее таймера. Или кроме как править сам ассинхронный скрипт вариантов нет (а он не мой).
[Ответ]
Vital_N 11:04 16.12.2011
Сообщение от AlexanderSergeev:
который производит некоторые действия
ну да куда уж конкретнее )
Сообщение от AlexanderSergeev:
что врядли будет решение разумнее таймера
таймер -это самое неразумное решение
Никогда не знаешь сколько займет подгрузка блока
Сообщение от AlexanderSergeev:
Или кроме как править сам ассинхронный скрипт вариантов нет (а он не мой).
Вот с этого и надо начинать: сделать колбек на окончание загрузки всей требухи
[Ответ]
AlexanderSergeev 11:16 16.12.2011
Вот..это слово колбэк..callback да?
Как им воспользоваться в моей ситуации (указать скрипт, по окончании которого должна выполниться другая функция или типа того)?
Про некоторые действия - да там тупо изменение CSS свойств и текстового содержимого - не стал уточнять.
[Ответ]
Vital_N 11:19 16.12.2011
AlexanderSergeev,
ну ты то сторонний скрипт изменять можешь?
смотри как там грузится контентэтого блока твоего - покажи даже лучче
[Ответ]
Так в каком месте кода выше прописать функцию, которая только после 100% отработки их скрипта будет работать?
Неассинхронный код у меня не пашет, так что я этим тупить.
[Ответ]
Vital_N 11:43 16.12.2011
Не знаком с Ya.Direct
Но подозреваю, судя по коду, что если создаешь функцию и назовешь ее
yandex_context_callbacks
То она выполнится после загрузки
Смотри описание метода Ya.Direct.insertInto на предмет последнего параметра
[Ответ]
ilyaerin 11:46 16.12.2011
Думаю что ответы можно найти в документации к директу...
[Ответ]
DRON-ANARCHY 13:30 16.12.2011
AlexanderSergeev, давай проще: у тебя есть сайт, на котором стоит директ и ты хочешь с блоком рекламы извратиться каким-то образом уже после того, как он полностью загрузится. Не боишься по шапке получить, не?
[Ответ]
alemiks 13:54 16.12.2011
Сообщение от Vital_N:
Не знаком с Ya.Direct
Но подозреваю, судя по коду, что если создаешь функцию и назовешь ее
yandex_context_callbacks
То она выполнится после загрузки
Смотри описание метода Ya.Direct.insertInto на предмет последнего параметра
Судя по коду, yandex_context_callbacks - это стек функций, а не одна функция. Т.е. добавив в конец этого стека свою есть шанс, что она будет работать после формирования блока. Но не факт, т.к. в данном коде еще динамически тег script создается, а когда выполнится это js-ник, неизвестно.
[Ответ]
Vital_N 13:56 16.12.2011
Ну тут просто доки почитать надо, чего гадать
[Ответ]
DRON-ANARCHY 14:51 16.12.2011
Думаю, яндекс в любом случае не одобрит вмешательство в собственные коды.
[Ответ]
AlexanderSergeev 15:04 16.12.2011
Да знаю..а че делать, если надо чуток подкорректировать вывод.
Спасибо и на этом)
До вечера
[Ответ]
DRON-ANARCHY 15:29 16.12.2011
Так вот. С этого и надо начинать, чтобы не было сферических коней в вакууме.
Ты ставишь задачи, до которых додумываешься сам, а решаться они могут значительно проще и теми способами, до которых ты не додумался, сразу же достав бубен и заставив остальных достать свои.
[Ответ]