Сделал скрипт, не работает полностью через tampermonkey
Значит, сделал я юзерскрипт, проблема вот в чём: если вставлять скрипт через консоль, то он работает нормально, а если через Tampermonkey, то он вроде как работает, но когда выбираю какой-нибудь пункт из выпадающего списка, ничего не происходит. А должен добавляться текст в textarea. Если вставлять через консоль, то работает. Вот скрипт:
var replyarea = document.getElementsByClassName("forumtopic_reply_textarea");
var replyareael = replyarea[0];
function addtext(text) {
replyareael.value += text;
}
var textareaforum = document.getElementsByClassName("commentthread_entry_autosubscribe");
var textareaforumel = textareaforum[0];
textareaforumel.innerHTML += "<select onchange='addtext(this.options[this.selectedIndex].value)'><option value=''></option><option value='1'>Аккаунт</option><option value='2' selected>Ключ</option></select>";
UPD: Я узнал ошибку, ругается на то, что не обозначена функция addtext. Я убрал функцию, начало ругаться на то, что не обозначена переменная... Что за бред? |
скорее всего сайт подгружает часть контента аяксом
самый простой костыль, обернуть в
setTimeout(function(){
//ваш код
},2000);
|
Сделал, всё равно втирает, что функция не обозначена.
|
textareaforumel.innerHTML +=Так делать нельзя ни в коенм случае(и в обычном коде тоже). a+=b это на самом деле a=a+b, т.е. таким образом в переписываете весь предыдущий код заново, сбрасывая на ноль любые обработчики в нём присутствующие. Но проблема не в этом.) Код в юзер скриптах находится на отдельном "уровне" и обычно(есть варианты) напрямую к ним из страницы обращаться нельзя. Делать надо примерно так:
var replyarea = document.getElementsByClassName("forumtopic_reply_textarea");
var replyareael = replyarea[0];
function addtext(text) {
replyareael.value += text;
}
var textareaforum = document.getElementsByClassName("commentthread_entry_autosubscribe");
var textareaforumel = textareaforum[0];
var select = document.createElement('select');
select.onchange = function(){
addtext(this.options[this.selectedIndex].value);
};
var option = select.appendChild(document.createElement('option'));
option.value = '';
option = select.appendChild(document.createElement('option'));
option.value = '1';
option.innerHTML = 'Аккаунт';
option = select.appendChild(document.createElement('option'));
option.value = '2';
option.innerHTML = 'Ключ';
textareaforumel.appendChild(select);
Т.е сохраняя все связи внутри скрипта,а не преобразуя в текст и добавляя на страницу. |
Огромное спасибо!
|
| Часовой пояс GMT +3, время: 08:37. |