Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Отлов изменения input.value левым скриптом (https://javascript.ru/forum/misc/35036-otlov-izmeneniya-input-value-levym-skriptom.html)

danik.js 28.01.2013 21:13

Отлов изменения input.value левым скриптом
 
Пишу расширение для Хрома. Нужно отслеживать изменение значения инпутов и тексовых областей. Изменения производятся скриптами страницы, к ним я доступа не имею. Какие есть пути решения проблемы?

Deff 28.01.2013 21:33

danik.js,
oninput

или .input на jQuery

danik.js 28.01.2013 21:37

Ну было бы все так просто, я бы не спрашивал. Это событие возникает только при вводе текста пользователем. Скрипты не триггерят это событие.

Deff 28.01.2013 21:43

danik.js,
Втавь oninput="MyFunk(this)" в контент тега
на jQuery replaceWith
Старайся это сделать до загрузки DOM (т.е скрипт поставить в хидер без обертки в событие загрузки страницы
(Или из верха - по таймеру

danik.js 28.01.2013 21:45

И че это даст? И причем тут jQuery то. Давай без него.

Deff 28.01.2013 21:57

http://javascript.ru/tutorial/events/comparison

nerv_ 28.01.2013 22:01

могу ошибаться, но посмотри это https://developer.mozilla.org/en-US/...utation_events

danik.js 28.01.2013 22:10

nerv_, пробовал, не подходит. Содержимое ноды то не меняется. Меняется тупо свойство value, и это изменение никак не отражается на атрибутах/содержимом элемента.

Deff, вобще не понял что я там полезного должен найти )

Deff 28.01.2013 22:19

danik.js,
Первым срабатывает событие установленной на атрибут в элементе,
Если успеешь заменить тег до установки Их обработчиков - то ...
Второе - есть событие изменение контента на странице - по событию обходишь все инпут
3. можно попробовать пролистать лист событий, найти нужные и видоизменить,
вроде находил на stackoverflow.com

danik.js 28.01.2013 22:30

Так прикол в том что никаких изменений в DOM-е не происходит. Все на своих местах, ничего не меняется. Меняется только текст в инпуте и свойство value. Свойство onchange не срабатывает при изменении value скриптом. По крайней мере в хроме. Да и если срабатывает где-то, то всеравно, мне нужно моментально отслеживать изменения а не по потере фокуса.

Deff 28.01.2013 23:04

danik.js,
Цитата:

Сообщение от danik.js
Свойство onchange не срабатывает при изменении value скриптом.

Тады setInterval и периодический тест нужных input
A input этим нужна эта смена value скриптами ? (можно тупо поменять им или обрамлению класс, id и т.д.

danik.js 28.01.2013 23:36

не хочу setInterval :-E
Блин, пробовал установить сеттер для value свойства. Все работает отлично. Элемент все-равно скрывается и неважно что в него ничего не пишется. Но мне нужна возможность восстановления элемента. Реально ли восстановить обратно input.value, чтоб работало как до хирургического вмешательства?

Deff 28.01.2013 23:59

danik.js,
:) А поставить позицией абсолюте - фальш input - над реальным - и пусть пользователь работает с ним, а в конце пропишешь куда надо и уберешь

danik.js 29.01.2013 00:10

Deff, ну сколько можно повторять. Меняет не пользователь, а скрипты. Вот например пользователь нажмет над этим редактором кнопочку B чтоб обрамить текст в , скрипт изменит value текстарии.

Deff 29.01.2013 00:12

danik.js,
Блин поверху ставишь такой же инпут - пусть скрипт меняет - сверху твой, видный пользователю!
В конце- сделаешь нужный ченч значений и скрытие твоего фальшивого

danik.js 29.01.2013 01:41

Скрипту пофиг какой сверху какой снизу. Он привязан к тому что изначально есть. Да и какая разница к чему там скрипты привязываются. Событий всеравно никаких не триггерится. Может всетаки как-то можно вернуть начальный дескриптор свойства value ? Как это value вобще работает? В инспекторе не видно никаких сеттеров-геттеров. Как тогда textarea обновляет свой вид? Магия?


Часовой пояс GMT +3, время: 20:28.