установка текста в текстовой области с использованием JavaScript - PullRequest
0 голосов
/ 24 декабря 2011

Я пытаюсь обработать текст в текстовой области [на странице группы Facebook.«написать сообщение» имеет одну текстовую область] и заменить его новым текстом.Это делается с помощью скрипта Greasemonkey

textHolder = document.getElementsByClassName( "uiTextareaAutogrow input mentionsTextarea textInput" )[0];

var vntext=textHolder.value;

var vn2text=Encrypt(vntext);

textHolder.value=vn2text;

Таким образом, новый текст виден в текстовой области, но при нажатии кнопки «Опубликовать» новый текст не берется, вместо старого отправляется текст

Но если мы вручную добавим хотя бы один символ в обработанный текст, то полученный текст будет опубликован после нажатия кнопки «Опубликовать».Поэтому я не понимаю, почему он напрямую не берет новый текст без вставки текста вручную.

Есть другие события, вызываемые в элементе textarea, но я не знаю, что именно они делают.

Итак, что нужно сделать, чтобы новый текст был опубликован?

DOM для текстовой области на странице Facebook выглядит следующим образом:

<textarea 
    class="uiTextareaAutogrow input mentionsTextarea textInput DOMControl_placeholder" 
    title="Write something..." name="xhpc_message_text" placeholder="Write something..." 
    onfocus="return wait_for_load(this, event, function() {if (!this._has_control) { new TextAreaControl(this).setAutogrow(true); this._has_control = true; } return wait_for_load(this, event, function() {JSCC.get('j4ef51acb72eb241587530255').init(JSCC.get('j4ef51acb72eb241587530256'));;JSCC.get('j4ef51acb72eb241587530256').init(["buildBestAvailableNames","hoistFriends"]);JSCC.get('j4ef51acb72eb241587530253').init({"max":10}, null, JSCC.get('j4ef51acb72eb241587530255'));;;});});" 
    autocomplete="off" style="direction: ltr; "
>
    Write something...
</textarea>

1 Ответ

1 голос
/ 24 декабря 2011

Можете ли вы дать ссылку на соответствующую страницу?

Эта страница может отслеживать значение этой текстовой области в JS или даже AJAX - публиковать ее при каждом нажатии клавиши. Нажатие на кнопку «опубликовать» может просто сказать странице / серверу использовать последнюю сохраненную версию текста.

Поскольку скрипт GM изменяет значение текстовой области независимо от событий мыши и фокуса, механизм отслеживания страницы и / или сервера не будет запущен.

Итак, если можете, найдите соответствующую функцию JS и вызовите ее после изменения текста.

Если это слишком сложно, попробуйте установить фокус на текстовую область, затем в другом месте, а затем обратно на текстовую область.

Или попробуйте отправить событие нажатия клавиши в текстовую область.

Ссылка на страницу или ее полный код для получения более подробной справки.

...