[Предложение] Кликабельные Комментарии Из...
MaxLevs 05 May 2017
Приветствую. Предлагаю сделать так, чтобы при нажатии на комментарий топа или на соответствующую кнопку страница комментариев перелистывалась на ту страницу, на которой этот коммент расположен. Это удобно, если хочется почитать комментарии топа в контексте. Например, если автор отвечает кому-то, и не совсем ясно, о чем идет речь. Искать комментарии "вручную" неудобно и, зачастую, долго.
UPD:
После осознания того, что ради этого никто "лапатить" сайт не будет, решил сделать все сам и написал userscript (кусок кода на js, который сам запускается и добавляет какой-либо функционал).
Скрипт может производить поиск комментариев не только из топа, но и с листа последних комментариев в профиле любого пользователя. Интерфейс простой - два клика и готово. Также есть api для написания своих скриптов на его базе без копирования кода.
Для того, чтобы эта шарманка работала, нужно установить расширение - платформу, которая, собственно, и будет запускать скрипт на странице online.anidub.com:
Скриншоты
Офтоп: как уменьшить картинки?
Сообщение отредактировал MaxLevs: 12 May 2017 - 04:51
UPD:
После осознания того, что ради этого никто "лапатить" сайт не будет, решил сделать все сам и написал userscript (кусок кода на js, который сам запускается и добавляет какой-либо функционал).
Скрипт может производить поиск комментариев не только из топа, но и с листа последних комментариев в профиле любого пользователя. Интерфейс простой - два клика и готово. Также есть api для написания своих скриптов на его базе без копирования кода.
Для того, чтобы эта шарманка работала, нужно установить расширение - платформу, которая, собственно, и будет запускать скрипт на странице online.anidub.com:
- Для Google Chrome - Tempermonkey
- Для Firefox - Greasemonkey
- Для Opera - Violentmonkey
- Скрытый текст
- Скачать одно из вышеперечисленных расширений для вашего браузера
- Перейти по этой ссылке (там скрипт)
- Нажать на "Установить"; откроется окно tampermonkey(или greasemonkey)
- Жмем там на "Install"
- ??????????
- PROFIT!!!
Скриншоты
Офтоп: как уменьшить картинки?
Сообщение отредактировал MaxLevs: 12 May 2017 - 04:51
MaxLevs 05 May 2017
srg_sniper 05 May 2017
MaxLevs 05 May 2017
MaxLevs 07 May 2017
Короче, написал я скрипт, который все это делает.
Вот ссылка. Код там в открытом доступе.
Сообщение отредактировал MaxLevs: 08 May 2017 - 16:18
Вот ссылка. Код там в открытом доступе.
Сообщение отредактировал MaxLevs: 08 May 2017 - 16:18
Li Si Cin 08 May 2017
MaxLevs (07 May 2017 - 05:46) писал:
Короче, написал я скрипт, который все это делает.
Прикольно. Главное, чтоб API не менялся. А то будет, как с плагином к xbmc - вк перестал быть основным хостером - и привет. Но, думаю, в данном случае все на века. :)
Ставить, правда, не буду. Хотя, теоретически, можно было бы использовать твой скрипт для другой задачи: искать каменты, но не топчики с той же страницы, а свои (или чужие) каменты, список которых в профиле юзера. Но это уже другая страница, и надо как-то передавать id (через злоумышленников куки или localStorage). Вообще, хорошо бы это все делалось на бэкенде, но это нереально, ради таких мелочей никто пальцем не пошевелит. Отсюда и уверенность в устойчивом API. :)
MaxLevs 08 May 2017
Li Si Cin (08 May 2017 - 02:06) писал:
Но это уже другая страница, и надо как-то передавать id
А, вообще, для таких целей, я думаю, целесообразнее будет писать расширение - лучше интеграция с браузером. И не нужно будет париться с передачей данных между вкладками.
Li Si Cin 08 May 2017
MaxLevs (08 May 2017 - 07:18) писал:
можно открыть через window.open в новой вкладке...
Цитата
А, вообще, для таких целей, я думаю, целесообразнее будет писать расширение - лучше интеграция с браузером.
MaxLevs 08 May 2017
Немного поправил скрипт. Теперь он:
Если речь идет о расширениях под хром, то это js.
- Более красивый
- Более стабильный
- Имеет "API"
Li Si Cin (08 May 2017 - 16:21) писал:
Не, для меня не вариант. Если на js я мог бы что-нить страшненькое накарябать, то в расширениях не разбирался, и желания/потребности пока нет.
Если речь идет о расширениях под хром, то это js.
Li Si Cin 09 May 2017
MaxLevs (08 May 2017 - 16:23) писал:
Я бы мог, чисто теоретически, написать фишку с поиском комментов из списков в профилях пользователей, но, чую, гемором это попахивает...
Цитата
Если речь идет о расширениях под хром, то это js.
MaxLevs 09 May 2017
Li Si Cin (09 May 2017 - 01:05) писал:
сколько будет гемора
Li Si Cin (09 May 2017 - 01:05) писал:
И, в данном случае, мне было бы стыдно, если бы кто-то сделал за меня работу, которую могу сделать сам
Я это чисто по фанчику делаю. Расхочется - не буду :D Это быстро решатеся)
Li Si Cin 09 May 2017
Таки через w.open решил? Я долго думал, почему у меня обработчик не срабатывает (точнее, open не работает). :)
Оказалось у меня в двух местах было заблочено: в своем скрипте было window.open = null и в uBlock запрет на всплывающие окна.
Кстати, лиса ругается единовременно при установке скрипта и после правки скрипта при нахождении на странице (см. аттач). Потом пропадает. На работоспособность скрипта не влияет. Мне кажется нет смысла париться, у меня вообще стоит
Не знаю, как легко отловить событие рендеринга каментов, поэтому тупо добавил для прокрутки к каменту время на рендер:
Оказалось у меня в двух местах было заблочено: в своем скрипте было window.open = null и в uBlock запрет на всплывающие окна.
Кстати, лиса ругается единовременно при установке скрипта и после правки скрипта при нахождении на странице (см. аттач). Потом пропадает. На работоспособность скрипта не влияет. Мне кажется нет смысла париться, у меня вообще стоит
// @include http://online.anidub.com/*
Не знаю, как легко отловить событие рендеринга каментов, поэтому тупо добавил для прокрутки к каменту время на рендер:
default: indicator.style.backgroundColor = "#6fae18"; indicator.textContent = "НАЙДЕНО"; setTimeout( function() { targetPage.document.getElementById(point.id).scrollIntoView(); }, 100);
Прикрепленные файлы
-
error.png (13.39К)
Количество загрузок:: 8
MaxLevs 10 May 2017
Li Si Cin (09 May 2017 - 20:28) писал:
Кстати, лиса ругается единовременно при установке скрипта и после правки скрипта при нахождении на странице (см. аттач). Потом пропадает. На работоспособность скрипта не влияет. Мне кажется нет смысла париться, у меня вообще стоит
// @include http://online.anidub.com/*
Что-то с лисой твориться странное..
У тебя tempermonkey?
Li Si Cin (09 May 2017 - 20:28) писал:
Не знаю, как легко отловить событие рендеринга каментов, поэтому тупо добавил для прокрутки к каменту время на рендер.
addEventListener('ad_scriptOnLoad', doSomething);Я планировал это делать и для своей реализации, но мне было лень возиться со структурой кода, чтобы все по феншую.
Li Si Cin 10 May 2017
MaxLevs (10 May 2017 - 00:42) писал:
Что-то с лисой твориться странное..
У тебя tempermonkey?
У тебя tempermonkey?
MaxLevs (10 May 2017 - 00:42) писал:
Я могу прикрутить к body кастомное событие на загрузку моего скрипта.
Можно сразу после CommentsPage вставлять, но там нулем не обойдешься, там нужна 100-ка минимум. Событие загрузки твоего скрипта, ничем не будет отличаться от произвольной задержки, т.к. эта самая CommentsPage полностью строит каменты весьма небыстро. Кстати, из какого скрипта она идет, я что-то не нашел.
Ну а по честному надо либо опрашивать с интервалом на предмет долгожданного появления id, либо подписываться на изменения какого-то родительского элемента. Но зачем, если костыль работает. :)
MaxLevs 10 May 2017
Li Si Cin (10 May 2017 - 01:43) писал:
Событие загрузки твоего скрипта, ничем не будет отличаться от произвольной задержки, т.к. эта самая CommentsPage полностью строит каменты весьма небыстро. Кстати, из какого скрипта она идет, я что-то не нашел.
Мой скрипт загружается как раз тогда, когда можно вызвать window.ad_searchManager(), то есть начать поиск. Большего и не надо. Или ты чего-то другого ждешь? Опиши подробнее тогда.
Долго строит из-за того, что ждет ответ от сервера. Сам код там маленький. 1)отобразить процесс загрузки 2)обратиться к comment.php 3)при получении отрубить отображение процесса загрузки и вставить данные через innerHTML.
Данные - json, состоящий из полей navigation (те саиые кнопочки и срелочки) и comments, содержимое которых - валидный html
MaxLevs 10 May 2017
Очередное обновление, И... я думаю, оно будет последним. Основной набор задач решен. Оптимизация проведена. Код структурирован максимально красиво, исходя из возможностей. Дальнейшего развития для него я не вижу.
Li Si Cin 10 May 2017
MaxLevs (10 May 2017 - 02:10) писал:
Мой скрипт загружается как раз тогда, когда можно вызвать window.ad_searchManager(), то есть начать поиск. Большего и не надо. Или ты чего-то другого ждешь? Опиши подробнее тогда.
Долго строит из-за того, что ждет ответ от сервера. Сам код там маленький. 1)отобразить процесс загрузки 2)обратиться к comment.php 3)при получении отрубить отображение процесса загрузки и вставить данные через innerHTML.
Данные - json, состоящий из полей navigation (те саиые кнопочки и срелочки) и comments, содержимое которых - валидный html
можно написать свою реализацию commentPage, и все будет по феншую
Долго строит из-за того, что ждет ответ от сервера. Сам код там маленький. 1)отобразить процесс загрузки 2)обратиться к comment.php 3)при получении отрубить отображение процесса загрузки и вставить данные через innerHTML.
Данные - json, состоящий из полей navigation (те саиые кнопочки и срелочки) и comments, содержимое которых - валидный html
можно написать свою реализацию commentPage, и все будет по феншую
Я вижу, что ты решил сам выводить каменты, не пользуясь ей. Раз уж там действительно все готовенькое, то может так и проще.
И кстати, опять ругался на @match. Походу, в отличие от include, ему scheme обязательна, ибо в таком виде не ругается:
// @match *://online.anidub.com/* или // @match *://online.anidub.com/*/*/* // @match *://online.anidub.com/index.php?*do=lastcomments*
И было б здорово, если б ты в корневом посте краткую инструкцию разместил:
- скачайте такое-то дополнение,
- сделайте то-то.
Может у кого-то из непричастных и получится.