1. ホーム
  2. javascript

[解決済み] Object.watch()で全ブラウザに対応?

2022-08-29 23:22:47

質問

以下の点にご注意ください。 Object.Watch Object.Observe は、いずれも現在(2018年6月現在)非推奨です。


オブジェクトや変数の変更を簡単に監視する方法を探していたところ、私は 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 + "<br>");
  return newValue;
});

watcher.status = 'asdf';
watcher.status = '1234';

document.write(watcher.status + "<br>");

どのように解決するのですか?

(クロスポストのために申し訳ありませんが、私は同様の質問に対して与えたこの答えは、ここでうまく機能します)

私は小さな オブジェクト.ウォッチ シム を作成しました。IE8、Safari、Chrome、Firefox、Opera などで動作します。