[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вызов "autocomplete" в vk.com
Kusss
Решил написать расширение, для рассылки сообщений списку друзей.
К примеру в какой-то теме есть интересное сообщение - и при нажатии на "поделиться" просто нажимаете на одну кнопку, и скрипт должен всех выбранных друзей добавить в список рассылок.

Как я выяснил - 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;
}
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.