Greasy Fork is available in English.
slap by online on vk.com
当前为
// ==UserScript==
// @name VK slaps
// @namespace Violentmonkey Scripts
// @description slap by online on vk.com
// @version 1.0
// @require https://code.jquery.com/jquery-3.2.1.min.js
// @match https://vk.com/im*
// @grant none
// ==/UserScript==
// add callback when '@here' or '*here' is typed and Tab key it pressed
$(".im_editable.im-chat-input--text._im_text").on("keyup", function (e) {
if (e.which == 9 && (e.target.textContent == '@here' || e.target.textContent == '*here')) {
my.setOnlineMembers();
}
})
my = {
setOnlineMembers: function () {
onlineMembers = [];
// open members list
$('._im_chat_members.im-page--members').click();
// wait untill list loaded
var checkExist = setInterval(function() {
if ($('.im-member-item--left > .im-member-iterm--status').length) {
console.log("Exists!");
clearInterval(checkExist);
setOnlineMembers();
}
}, 500);
function setOnlineMembers() {
// get all online members
$onlineMembersElements = $('.im-member-item--left > .im-member-iterm--status')
.filter(function(){if ($(this).text()==='online') return $(this)})
.prev()
.children();
let onlineMembersElementIds = $onlineMembersElements.map(function() { return $(this).attr('href').replace('/', '@')});
let onlineMembersElementNames = $onlineMembersElements.map(function() { return '(' + $(this).text().split(' ')[0] + ')'});
// get array of final string with online members
for (let i = 0; i < onlineMembersElementIds.length; i++) {
onlineMembers.push(onlineMembersElementIds[i] + ' ' + onlineMembersElementNames[i]);
}
// close members list
$('.box_x_button').click();
// add online members to input field
$('.im_editable.im-chat-input--text._im_text').click();
$('.im_editable.im-chat-input--text._im_text').text(onlineMembers.join(' '));
}
}
};