К примеру в какой-то теме есть интересное сообщение - и при нажатии на "поделиться" просто нажимаете на одну кнопку, и скрипт должен всех выбранных друзей добавить в список рассылок.
Как я выяснил - VK позволяет по умолчанию выбрать только первых 20 друзей, остальных он подгружает поиском через "/hints.php" с параметрами . (Этот код есть в скрипте).
Проблема в следующем. Не получается вызвать "autocomplete" аппаратно.
/*
Проблема вот в этой части кода, при переборе Друзей не происходит выбор
*/
$('#like_mail_dd').find('.wdd_lwrap').css({'display' : 'block'});
$('#like_mail_dd').find('.wdd_add fl_l').hide();
$('#like_mail_inp').show().focus().val(letter).change();
Использую расширение для Хрома
А вот код в виде json, который можно сразу загрузить в плагин.
let timer,
selected = false,
emptyStorage = { "frendId": {} };
if (!localStorage['freds']) {
localStorage['freds'] = JSON.stringify( emptyStorage );
}
$('#box_layer').on('DOMSubtreeModified', function(){
clearTimeout(timer);
timer = setTimeout(function(){
inFrends();
clearTimeout(timer);
}, 500);
});
function inFrends() {
if ( !$('#like_share_mail').hasClass('radiobtn on'))
return false;
$('.inFrends').remove();
let obj = JSON.parse(localStorage['freds']);
let number = Object.keys(obj.frendId).length;
$('#like_share_mail').append('<div class="inFrends">Вставить '+ number +'</div>');
/*
let frendList = '';
$.each( obj.frendId, function( id, objId ) {
frendList += '<div class="wddi red"';
frendList += ' onmousedown="WideDropdown.over(\'like_mail_dd\', \''+ id +'\'); WideDropdown.select(\'like_mail_dd\', event)" onmousemove="WideDropdown.over(\'like_mail_dd\', \''+ id +'\')"';
frendList += ' id="wddi'+ id +'_like_mail_dd" onclick="">';
frendList += '<div class="wddi_data">';
frendList += '<b class="fl_l wddi_thumb _online"><img class="wddi_img" src="'+ objId.src +'"></b>';
frendList += '<div class="wddi_text red">'+ objId.name +'</div>';
frendList += '<div class="wddi_sub"></div> </div>';
frendList += '</div>';
});
$('#like_mail_dd').find('.ui_scroll_content.clear_fix').prepend(frendList);
*/
}
$('#box_layer').on('click', '.inFrends', function(){
let add = '';
let obj = JSON.parse(localStorage['freds']);
let x = 1;
$.each( obj.frendId, function( id, objId ) {
let letter = objId.name;//.substring(0,3);
setTimeout(function() {
/*
Проблема вот в этой части кода, при переборе Друзей не происходит выбор
*/
$('#like_mail_dd').find('.wdd_lwrap').css({'display' : 'block'});
$('#like_mail_dd').find('.wdd_add fl_l').hide();
$('#like_mail_inp').show().focus().val(letter).change();
/*
setTimeout(function() {
if ( $('#wddi'+ id +'_like_mail_dd').attr('onmousedown') !== undefined ) {
console.log('2');
console.log(objId.name, letter, id);
$('#box_layer').find('#wddi'+ id +'_like_mail_dd').trigger('onmousedown');
}
}, 500);
*/
/*
$.ajax({
type: "POST",
url: "/hints.php",
data: {'act': 'a_json_friends','al': 1,'from': 'imwrite','str': letter},
success: function(result) {
console.log('1');
console.log(objId.name, letter, '#wddi'+ id +'_like_mail_dd');
if ( $('#wddi'+ id +'_like_mail_dd').attr('onmousedown') !== undefined ) {
console.log('2');
console.log(objId.name, letter, id);
$('#box_layer').find('#wddi'+ id +'_like_mail_dd').trigger('onmousedown');
}
},
error: function(err) {
console.log('Ошибка');
}
});
*/
}, 3000*x);
//return false;
x++;
});
});
$('#wrap3').on('DOMSubtreeModified', function(){
clearTimeout(timer);
if ($(this).find('.friends_user_row').length == 0) {
return;
}
timer = setTimeout(function(){
frends();
clearTimeout(timer);
}, 500);
});
function frends(){
if (selected === false)
selected = selectFrend();
let obj = JSON.parse(localStorage['freds']);
$('.friends_user_row').each( function(){
let id = $(this).attr('id').replace('friends_user_row', '');
let name = $(this).find('.friends_field_title').text();
let src = $(this).find('.friends_photo_img').attr('src');
if ( $(this).find('.selectedFrends').length > 0 ) {
return true;
}
$checked = (obj.frendId[id] === undefined) ? '' : 'checked';
$append = '<div class="selectedFrends">';
$append += '<input type="checkbox" value="'+ id +'" name="'+ name +'" src="'+ src +'" '+ $checked +'>';
$append += '</div>';
$append += '<div class="reset">Сброс: <span class="FrendSelectNumber">0</span></div>';
$(this).append($append);
});
$('.FrendSelectNumber').text( Object.keys(obj.frendId).length );
}
function selectFrend(){
$('#wrap3').on('change', '.selectedFrends > input', function(){
let id = $(this).val(),
name = $(this).attr('name'),
src = $(this).attr('src'),
change = 'delete';
if ($(this).prop( "checked" ))
change = 'add';
localStorage['freds'] = editLocalStorage(id, name, src, change);
console.log( localStorage['freds'] );
});
$('#wrap3').on('click', '.reset', function(){
obj = emptyStorage;
localStorage['freds'] = JSON.stringify( obj );
$('.FrendSelectNumber').text( 0 );
$('.selectedFrends > input').prop("checked", false);
});
}
function editLocalStorage(id, name, src, change){
let obj = JSON.parse(localStorage['freds']);
if (!obj.frendId)
obj = emptyStorage;
if (change == 'add'){
obj.frendId[id] = {'name' : name, 'src' : src };
} else {
delete obj.frendId[id];
}
$('.FrendSelectNumber').text( Object.keys(obj.frendId).length );
return JSON.stringify(obj);
}
.selectedFrends {
position: absolute;
right: 70px;
top: 17px;
}
.reset {
position: absolute;
right: 0px;
top: 85px;
cursor: pointer;
font-size : 12px;
color: gray;
}
.selectedFrends input {
width : 18px;
height : 18px;
}
.inFrends {
cursor: pointer;
margin-top: 10px;
}
.inFrends:before {
display: block;
content: '';
float: left;
width: 14px;
margin: 1px 7px 1px 0;
height: 14px;
}
.wddi .wddi_text.red {
color: red;
}