Как стать автором
Обновить

Комментарии 65

А вы не слышали про то что у каждого пользователя есть возможность работать через джаббер?
Вот ссылка vkontakte.ru/help.php?page=jabber
По моему самый простой и удобный способ общения, не напоминающий что это соц сеть))))
Слышал и знаю. Несколько раз тот самый VK-джаббер предлагал мне «проверить номер телефона», отказываясь отправлять сообщение. И, в данном случае, веб-интерфейс для меня удобнее, здесь чисто субъективный аспект.

К тому же, я давно хотел начать осваивать Greasemonkey — идея данного скрипта показалась мне неплохим началом, я просто захотел поделиться ей с народом — статей по Greasemonkey не очень-то много.
Если уж осваивали грисманки, то лучше бы сделали скрипт для админов групп в контакте. Суть в том, что надо к кнопкам «Это спам | Удалить» добавить ещё одну «забанить». Кнопка банит пользователя и удаляет все его сообщения из «текущей темы за 7 дней». Сейчас приходится жать 3 раза – спам — восстановить — спам — восстановить — спам и тогда появляется заветная кнопка «Удалить все её сообщения за последнюю неделю и добавить её в черный список.»
Если бы я админил группу, я бы, возможно, и задумался об этом, но я ни в одной даже не состою.
Просто спам в вконтакте – это горе горькое просто. Его приходят тонны каждый день. Русских в фейсбуке нету, поэтому приходится пользоваться контактом.
Про спам вконтакте я знаю. Думаю, написать такой скрипт не составит труда. Создать тестовую группу как плацдарм для экспериментов — дело пары минут. И, по-идее, если не возникнет никаких сложностей, нам нужно будет всего лишь добавить одну ссылку на ПМЖ в тулбар.
Буду рад, если сделаете.
держите) написано для оперы, вроде, работает. в остальных браузерах не проверял, но, думаю, не работает, так как объявляю глобальную функцию просто как function…
posts[i].getElementsByClassName("postOptions")[0].getElementsByTagName("a")
posts[i].getElementsByClassName("postOptions")[0].getElementsByTagName("ul")[0]

Почему бы не воспользоваться querySelector для таких целей?
posts[i].querySelectorAll('.postOptions a')
posts[i].querySelector('.postOptions ul')
интересно а с чего вы взяли что на facebok нету русских???
возможно вы иели ввиду что людей с которыми вы общаетесь нету, но это же не все русские.
Количество русских в вконтакте превосходит в разы кол-во русских в фейсбуке.
Группа в вконтакте для продвижения услуг, а не для общения.
но вы то сказали что русских в фейсбуке нету, вот это меня удивило.
Ну если только из целей обучения и принципиальности web интерфейса)))
Можно кстати воспользоваться встроенным чатом vkontakte.ru/im.php?act=a_box&popup=1
))
Своё мнение по поводу встроенного чата я уже высказал во вступлении
Можно попробовать браузерный Jabber клиент (Meebo например) и вконтактовский jabber
Я нечто подобное для free-lance.ru писал давно ещё, правда там было попроще и кол-во сообщений выводилось в title. А джаббера там не было.
А еще у вконтакта есть аджакс-апи, правда о нем нет никаких данных.
$.post("/mail.php", {filter: «new», out: 0}, function(data) { alert(data.count) }, «json»);
Спасибо за пример. Поправьте пожалуйста интервалы. Они у Вас, то 20, то 10)
Спасибо, исправил. Статью писал по мере написания скрипта, для теста которого ставил 10 секунд, чтобы сократить время ожидания, потом увеличил время до 20, а в том месте исправить забыл.
используйте константу, особенно для интервалов времени.
>jquery
УХ ТЫ, КОКОЙ ОВЕРХЕД!
>SubStrCount(source, str)
за милю видно пыхапешника (я ведь прав?)
кстати, ваша функция возвращает неверный результат (SubStrCount(«010», «0») вернет 1)
вот доработанная: dpaste.org/z2Ss/
Да, насчёт PHP вы правы. А насчёт оверхеда — скрипт jQuery сохраняется локально рядом с файлом скрипта, т.е. загружается один раз. На сайте по пустякам я бы, пожалуй, не стал его использовать, а локально — why not?
И, спасибо за замечание по функции, исправил.
А зачем тут jquery? А вы знаете, что @require не везде работает? К тому же, если я ничего не путаю, у вконтакта есть где-то шлюз, который данные о сообщениях отдает в JSON'e
О шлюзе ничего не слышал. Про @require тоже не в курсе, буду признателен, если расскажете. А jQuery потому, что мне было удобнее написать с его использованием (повторюсь, что писал для себя)
Если писали для себя — зачем выкладывать? И ради того, чтобы сэкономить от силы пару десятков строк вы заставляете грузить всю либу? Это не очень хороший путь для написания userJS
habrahabr.ru/blogs/GreaseMonkey/74067/
Там в последнем абзаце написано, что require работает только в ФФ. Таким образом, вы забиваете на пользователей двух других популярных браузеров?
Не спорю, пользователи не-Firefox не у дел. Пожалуй, вы меня убедили. Я напишу версию без использования jQuery.
Не вижу ничего плохого в том, чтобы поделиться своими наработками с народом. Возможно, кому-нибудь пригодится. А я, в свою очередь, могу выслушать замечания более квалифицированных в этом вопросе людей, тем самым получив опыт. Кому от этого хуже?
Поглядите файрбагом на вконтатовский тулбар, он регулярно пингует какой-то урл, и тот ему возвращает джейсон.

Точно не скажу, давно уже на джаббере.
А, ниже уже указали, /feed.php
См. выше.
Я видел Ваш пост, спасибо. Я имел в виду, что до этого ничего не слышал о нём.
НЛО прилетело и опубликовало эту надпись здесь
Про быстрые сообщения уже было сказано дважды
НЛО прилетело и опубликовало эту надпись здесь
Объективно — ничем. Он удобнее лично для меня.
НЛО прилетело и опубликовало эту надпись здесь
очень круто гонять полную страницу туда сюда, вместо того чтобы юзать быстрые сообщения или жаббер.
попробуйте брать количество новых сообщений по ссылке:
vkontakte.ru/feed2.php
спасибо, значительно снизит потребление трафика и увеличит скорость
Буквально вчера ковырял JS контакта для того чтоб удалить все сообщения автоматически. Нашел функцию пометки всех сообщений на странице, потом в цикле вызывал delMsg и вроде бы все хорошо, но после вызова встроенного обновления списка сообщений, он не захотел обновлять страницу. Сколько ни мучался — полностью автоматизировать не удалось. Использовал правда не greasemonkey, а забивал js код в строку адреса
Используйте VK API — там все это есть, в т.ч. и удаление сообщения со стены или из тем.
И как же использовать VK API в greasemonkey?
Без greasemonkey — пишем свое дополнение/приложение/веб-сервис для работы с ВКонтактом — оно-то и будет искать и удалять ненужные нам сообщения через VK API или «блокировать» пользователей. Как вариант, можно настроить взаимодействие данного приложения и с greasemonkey — чтобы пользователь через него мог отправлять на наш сервис нужные команды.
То есть, мне нужно зарегистрировать свое приложение для того чтобы использовать VK API вместо того чтобы сделать пару прямых запросов? Отлично!
НЛО прилетело и опубликовало эту надпись здесь
Написал версию без jQuery. Посоветуйте, лучше добавить второй вариант кода, или полностью заменить старый?
Второй вариант. Т.к. в случае чего можно будет быстро сравнить с первым вариантом.
Ну, я тоже об этом подумал. Скоро выложу — возникла небольшая проблемка (передаю привет верстальщикам Вконтакте): на основной странице и на странице сообщений разная вёрстка и разные названия элементов. Делаю так, чтобы работало и там и там.
Добавил вариант скрипта без jQuery
Можно было выбрать один из миниатюрных фреймворков без поддержки IE, например Atom JS. Недавно о нём писали на Хабре, но до 7-ого января автор забанен. Для этого фреймворк и был создан — подключается минимум кода, работает только в современных браузерах (а для user-js другого и не необходимо), использует встроенные возможности и потому очень быстрый. При этом остаётся удобство почти на уровне JQuery.
Впервые за время моего знакомства с JavaScript, мне понадобилось найти количество вхождений подстроки в строку. Каково же было моё удивление, когда я не нашёл соответствующей функции в JS. В итоге родился следующий код:

JavaScript очень мощный язык и в нём есть всё, что душе пожелаете. В данном случае:
"test string is here".match(/e/g) // ["e", "e", "e"]
"test string is here".match(/e/g).length // 3
"test string is here".match(/e[sr]/g).length // 2
"<post read=\\\"0\\\"><post read=\\\"1\\\"><post read=\\\"0\\\">".match(/read=\\"0\\"/g) // ["read=\"0\"", "read=\"0\""]
"<post read=\\\"0\\\"><post read=\\\"1\\\"><post read=\\\"0\\\">".match(/read=\\"0\\"/g).length // 2
Спасибо, к сожалению, плюсы на сегодня закончились. Я думал об использовании регулярных выражений, но почему-то не пришла мысль посчитать количество как match.length. Я, по-сути, изобрёл велосипед и сделал то же самое, но сложнее.
Не думаю, что парсить HTML регулярками это мудрое решение. Как-то об этом уже высказывались.
А в том скрипте что использует jQuery было бы лучше $('#messages_rows TR[read=0]').length
Одно дело — парсить html регулярными выражениями, что есть феерической сказкой.
Другое дело — найти все вхождения подстроки в строку. Я ведь не утверждала, что парсить html необходимо регулярками.
Просто сказала, что для самописной функции SubStrCount есть замена в языке.

Между прочим, даже на чистом JavaScript очень легко сделать то, что вы сказали:
document.querySelectorAll('#messages_rows tr[read=0]').length;
Здесь это не так актуально, но querySelectorAll не подойдёт для ИЕ
Конечно. Но user-js не подойдёт для IE =) Мы ведь обсуждаем определённый продукт.
Однозначно незачем тянуть костыли устаревших технологий туда, где они не нужны.
Да, Павел, Вы правы: )
Ну почему сразу Павел? Да, я совершенно согласна с этим его мнением. Возможно, потому что он меня учил и это мнение немножко навязано. Но оно чертовски обоснованно!
Кстати, два совета в одном сообщении. Не знаю, почему так мало людей пользуется вторым вариантом $(document).ready:
И зачем в этот раз создавать функцию, которая просто вызывает другую функцию =)
$(document).ready(function()
{
    CheckMail();
    setInterval(function() { CheckMail() }, RefreshInterval);
});

// =>

$(function() {
    CheckMail();
    setInterval(CheckMail, RefreshInterval);
});

> Не знаю, почему так мало людей пользуется вторым вариантом $(document).ready
Думаю, потому что функция должна быть очень заметна. $(function() {} везде не рекомендуют по этой причине. По ней же я, например, пишу
$(function() { //===================ready=====================

} //=================конец ready=====================
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории