Приветствую. Пишу userscript "для себя", особо углубляться в изучение js пока не намерен.
На одном сайте есть 2 блока div, содержащие комментарии. Первый - все комментарии, второй - топ 3. Структура неизменна. Расширение страницы - html.
Как заполняется топ, не знаю. Комменты первого блока подгружаются страницами по 10 штук через js методом get, со страницы /engine/ajax/comments.php, в которую передается номер страницы комментов и id статьи. Результат запроса - json, состоящий из полей comments и navigation, содержимое которых - валидный html, который и вставляется в соответствующие блоки на странице. (Первый блок комментов и блок навигации по ним). У блоков комментов есть уникальные для одной страницы id, и они совпадают с id комментов в топе. (Да, именно id...)
Нужно, чтобы при нажатии на коммент топа подгружалась страница комментов, на которой он находится. Ничего умнее перебора мне в голову не пришло, поэтому я снизошел до написания такой вот штуки (сравниваем id всех комментов с id трех комментов топа, пока не нашли всех):
var news_id = window.location.pathname.match(/\d*-/)[0].match(/\d*/)[0];
var bcont = document.getElementsByClassName('comm_best')[0];
var best = bcont.children;
var blen = best.length;
var lastPage = document.getElementsByClassName('navigation')[0].lastElementChild.innerHTML;
var compl = 0;
lastPage = parseInt(lastPage, 10);
function getCommentPage(page) {
$.get(dle_root+"engine/ajax/comments.php", {cstart:page,news_id:news_id,skin:dle_skin}, function(data){
var com = document.createElement("div");
com.innerHTML = data.comments;
for(var comment = 0; comment < com.children.length; ++comment){
for(var i = 0; i < blen; ++i){
if (com.children[comment].id === best[i].id){
best[i].onclick = function(){CommentsPage(page, news_id); return false;};
if(++compl === blen){
return 0;
}
}
}
}
},"json");
}
Пока комментов немного, можно и так, только когда их кол-во переваливает за 23000, браузер начинает сильно пыхтеть с загрузкой страницы, возникают ошибки в консоли.. Это происходит из-за того, что помимо текста в комментариях есть ещё и аватарки, и каждый раз после этой строчки
com.innerHTML = data.comments;
браузер их начитает грузить... 23000. Делать это по кд мне не комельфо, особенно если учесть, что мне нужен только id самых верхних элементов.. Как исправить?