Триггерное действие при изменении метки

0

Я делаю плагин веб-сайта, добавляя блок моего кода на определенную существующую веб-страницу, которая отслеживает изменение содержимого определенного веб-элемента на существующей странице и запускает дальнейшие действия по изменению.

В качестве плагина я не хочу изменять блок кода исходной страницы, я хочу получить контролируемый элемент и зарегистрировать вид "события изменения" этого элемента из моего кода. Например

<html>
...
<body>
...
<label id="idLable">some text</label>
...

<!-- here begin my code block -->
<script>
var label = document.getElementById("idLabel")
label.addOnChange(function (oldValue, newValue)
{
    //do something
});
</script>
<!-- here end my code block -->

</body>
</html>

Я долго искал Google, но не нашел решения. Можно ли это сделать?

Мое спасибо, Хай

  • 1
    Есть наблюдатель мутации, но забудьте об этом, убийца производительности и случайная поддержка. Лучше вызвать пользовательское событие при изменении текста метки или просто вызвать определенный метод. Вы должны быть в состоянии расширить плагин, чтобы добавить это поведение. Кстати, о каком плагине вы говорите? Может быть, он уже получил встроенный метод для этого или выставляет обратный вызов / событие. Еще один способ - расширить конкретный метод jQuery, если плагин использует jQuery для обновления текста метки.
  • 0
    Плагин - это то, что я пишу с нуля. На самом деле, какая технология используется на целевой веб-странице, не определено. Цель состоит в том, чтобы добавить код плагина на целевой странице, указать, какой контент элемента должен контролироваться, и что-то делать, когда контент меняется.
Показать ещё 1 комментарий
Теги:
web

1 ответ

0

В JS нет встроенной функции/опции. Но вы можете контролировать изменения с помощью функции setInterval. Вот пример кода:

var oldText=document.getElementById("idLabel").data;
var tmr = window.setInterval(function(){
if(document.getElementById("idLabel").data != oldText ) {


   //Your code goes here 


   window.clearInterval(tmr);
}
},1000);

Ещё вопросы

Сообщество Overcoder
Наверх
Меню