- *web *javascript *programmingЖуйк, я же знаю, в тебе дофига веб-девелоперов. Расскажи, как заоптимайзить такое: paste.pocoo.org
Это автоскроллел для окошка чятиков в IM, окошко чятиков на вебките.from Azoth_primary, 6 months ago
Replies (22)
- @NokitaKaze:А в какой из функций затыкание? TestScroll? Их слишком много вызывается, быть может. Поставить внутренний счётчик с последним вызовом. И выходить из функции, если последний вызов был менее 5 секунд назад.from web, 6 months ago
- @0xd34df00d:@NokitaKaze Да чтоб я знал. Похоже, что в ScrollToBottom, ибо при добавлении элемента в DOM-дерево (div внутри body) проц пару сот миллисекунд жрется на 100%.from web, 6 months ago, in reply to /1
- @0xd34df00d:@MoleculaCMS Ну, тащем-та, как можно соптимайзить либо общую концепцию, либо ScrollToBottom.from web, 6 months ago, in reply to /2
- @NokitaKaze:@0xd34df00d это легко проверяется. Закомментируй код одной из функций и тестируй страницу. Нет зависаний? Ты нашёл глючную функциюfrom web, 6 months ago, in reply to /4
- @MoleculaCMS:@0xd34df00d Можешь убрать
document.body.addEventListener ("DOMSubtreeModified", ScrollToBottom);
и сам вызвать ScrollToBottom() после добавления ноды в деревоfrom web, 6 months ago, in reply to /4 - @NokitaKaze:@0xd34df00d DOMSubtreeModified срабатывает на одно добавление или на каждый элемент? Попробуй туда таймер вставить на 4 секундыfrom web, 6 months ago, in reply to /4
- @0xd34df00d:@NokitaKaze На каждый элемент. Ну как ты в чятике общаешься, все равно редко чаще 4 секунд чо-то пишешь, просто на каждое сообщение, отправленное и полученное, кратковременный пик загрузки проца, который не наблюдается без костылей для автоскролла.from web, 6 months ago, in reply to /9
- @0xd34df00d:@MoleculaCMS Не могу.
Похоже, что добавление ноды из плюсового API асинхронное, и вызывать ScrollToBottom() после добавления поэтому не получается.from web, 6 months ago, in reply to /8 - @MoleculaCMS:@0xd34df00d еще можешь повесить addEventListener ("DOMSubtreeModified", ScrollToBottom); не на body, а на тот элемент в котором ты непосредственно вставляешь элемент с сообщениемfrom web, 6 months ago, in reply to /4
- @0xd34df00d:@MoleculaCMS Я и вставляю его непосредственно в body: i.imgur.comfrom web, 6 months ago, in reply to /13
- @MoleculaCMS:@0xd34df00d >Похоже, что добавление ноды из плюсового API асинхронное
получится, напиши setTimeout(ScrollToBottom, 200)from web, 6 months ago, in reply to /11 - @Cthulhu:from Miranda, 6 months ago
- @NokitaKaze:@Cthulhu своё анус они не желают показывать всякой черниfrom gmail.E5DEB03F, 6 months ago, in reply to /20
- @MoleculaCMS:try obj.addEventListener("DOMNodeInserted", handler, useCapture);from web, 6 months ago
- @MoleculaCMS:@0xd34df00d false, только его нужно вешать на элемент, который добавляешь, а если сообщений много, потом отписываешься от этого события, чтобы не перегружать событиями документ help.dottoro.comfrom web, 6 months ago, in reply to /23
- @0xd34df00d:@MoleculaCMS Впрочем, неважно, оно работает ощутимо быстрее и не фризится, спасибо.from web, 6 months ago, in reply to /22