Object.watch () для всех браузеров?

Обратите внимание на то, что Object.Watch и Object.Observe оба удерживаются от использования теперь (по состоянию на июнь 2018).


Я искал простой способ контролировать объект или переменную для изменений, и я нашел Object.watch(), это поддерживается в браузерах Mozilla, но не IE. Таким образом, я начал искать вокруг, чтобы видеть, записал ли кто-либо своего рода эквивалент.

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

Так или иначе, вопрос: кто-то может показать мне рабочий пример того плагина jQuery? У меня есть проблемы, заставляя это работать...

Или, кто-либо знает о каких-либо лучших альтернативах, которые работали бы перекрестный браузер?

Обновление после ответов:

Спасибо все для ответов! Я испытал код, отправленный здесь: http://webreflection.blogspot.com/2009/01/internet-explorer-object-watch.html

Но я, могло казаться, не заставил его работать с IE. Код ниже хорошо работает в Firefox, но ничего не делает в IE. В Firefox, каждый раз watcher.status изменяется, document.write() в watcher.watch() назван и Вы видите вывод на странице. В IE, которого не происходит, но я вижу это watcher.status обновляет значение, потому что последнее document.write() назовите шоу правильным значением (и в IE и в FF). Но, если функцию обратного вызова не называют, то это - вид бессмысленных... :)

Я пропускаю что-то?

var options = {'status': 'no status'},
watcher = createWatcher(options);

watcher.watch("status", function(prop, oldValue, newValue) {
  document.write("old: " + oldValue + ", new: " + newValue + "
"); return newValue; }); watcher.status = 'asdf'; watcher.status = '1234'; document.write(watcher.status + "
");

116
задан Brian Tompsett - 汤莱恩 19 August 2019 в 09:39
поделиться

1 ответ

Этот плагин просто использует таймер / интервал для многократной проверки изменений объекта. Может быть, достаточно хорошо, но лично я хотел бы больше непосредственности как наблюдатель.

Вот попытка перенести watch / unwatch в IE: http: //webreflection.blogspot .com / 2009/01 / internet-explorer-object-watch.html .

Он действительно меняет синтаксис способа добавления наблюдателей в Firefox. Вместо:

var obj = {foo:'bar'};
obj.watch('foo', fooChanged);

Вы делаете:

var obj = {foo:'bar'};
var watcher = createWatcher(obj);
watcher.watch('foo', fooChanged);

Не так мило, но как наблюдатель вы немедленно получаете уведомление.

19
ответ дан 24 November 2019 в 02:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: