問題タブ [object.observe]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
761 参照

javascript - object.observe on document.location

ページのハッシュが変更されたときに js スクリプトを実行する必要があります。jQuery を使用するなど、ハッシュがいつ変更されたかを知る方法はたくさんあります。

を使用しようとしましたが、機能しませんでした。オブジェクトObject.observeの更新後にコールバックが起動しない理由を知りたいだけです。document.location

0 投票する
0 に答える
73 参照

javascript - Object.getNotifier() ポリマー Web コンポーネント ポリフィルの一部ですか?

Chrome で実行する Polymer アプリを持っていますが、Firefox と Safari でエラーが発生します。 TypeError: Object.getNotifier is not a function

私は webcomponents.min.js ポリフィル ライブラリ (observe-js を含む) を含めました。足りないものはありますか?

Polymer v0.5.5を使用しています

ありがとう!

0 投票する
1 に答える
418 参照

polymer - ポリマー、グローバルパスを観察してください

値を更新する ために使用すると、ドロップPolymer 1.0でき、変更が監視されます。{{localPropFoo.bar}}barthis.set('localPropFoo.bar', 'new value');

しかし、制御できない外部オブジェクトにテンプレートをバインドしたい場合はどうすればよいでしょうか? たとえば、外部コードは に依存せず、 を呼び出さないため、これは変更{{window.globalFoo.bar}}にバインドされません。barPolymerthis.set

codepen のデモ

手動で使用Object.observeするには追加のコードが必要であり、FireFox では機能しません ( observe.jsのダーティ チェックを救出するため)。

コントロールできない外部オブジェクトへのデータ バインディングの慣用的な方法を知りたいです。

0 投票する
2 に答える
46 参照

javascript - 定義されたプロパティの値を監視中に最大スタックを超えました

through のプロパティを定義したオブジェクトの変更を観察するためにを使用しようとすると、Maximum call stack size exceededエラーが発生します。Object.observeObject.defineProperty

これらの両方の方法を引き続き使用しながら、このエラーをスローするのを回避する正しい方法は何ですか?

注:Object.observeは Chrome と Opera でのみ利用可能です

0 投票する
0 に答える
828 参照

javascript - JS オブジェクトのプロパティを HTML 要素に表示し、属性/プロパティが変更されるとすぐに HTML を更新する方法

現在、バックグラウンドで非同期に更新される何百もの JS オブジェクトで構成されるアプリケーションを作成しています。iframe で作成された複数のパネルを使用して、HTML のさまざまなオブジェクトを視覚化できます。

課題: オブジェクトが更新されるとすぐに、更新されたプロパティ/属性を表示する対応する HTML 要素が自動的に更新される必要があります。HTML 要素に発生する変更は、必ずしもオブジェクトに影響を与える必要があります。私が見た双方向のデータバインディング ライブラリの多くは、私のニーズを誇張する方法です。

Object.observe を使用して効率的なものを書くことは可能ですか? 現在、私は次のことを試しました(これは機能します)が、パフォーマンスが悪く、HTMLが既に削除された後(パネルが閉じられたか、新しいオブジェクトが開かれた後)、オブジェクトが監視され続けます:

main.html:


panel.html

「obj.param1 = 0;」を設定します main.html のコンソールで、すべての要素が必要な方法で正確に変更されます。特に要素が常に作成および削除されている場合、これを達成するためのよりエレガントな方法はありますか?

コメントやアイデアをお寄せいただきありがとうございます。

編集:同様の課題に悩まされている人のために、私の問題のほとんどを解決する小さなライブラリを作成することになりました: github.com/weltwinkel/.b

0 投票する
1 に答える
63 参照

javascript - クライアント JavaScript を使用して、ドキュメントに追加された新しい要素を監視する

Object.observe()からの再帰的な変更を監視するために数か月前に使用していましたwindow.document。現在、Oo() は em6+ から廃止されているため、この動作をカスタマイズする必要があります。ドキュメント内の任意の場所に作成された新しい要素にアクセスする必要があります。

私はこれらのプロジェクトを試しました(動作しますが、子の再帰はありません):

https://github.com/MaxArt2501/object-observe

https://github.com/jdarling/Object.observe

https://github.com/jdarling/Object.observe

Mozilla MDN からproxy https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxyを使用するように読みましたが、どのトラップを使用すればよいか、またはこれを再帰的にする方法がわかりません。

Oo() で使用している正確なコードは次のとおりです。

ポリフィルを使用して、または使用せずに、新しく作成されたオブジェクトにアクセスできる最小量のコードはどれくらいですか?