Сделал скрипт, не работает полностью через 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, время: 09:37. |