0

__define[GS]etter__プロパティが変更されたときに使用する、HTML 要素の監視メソッドを作成しようとしています。値を設定すると問題なく反応しますが、リッスンするプロパティが innerHTML の場合、指定された文字列のレンダリングに何らかの形で失敗します。したがって、基本的には、innerHTML に何かを追加しても表示されません。

この前の質問で説明されているウォッチ メソッドを使用しています: JavaScript でオブジェクト プロパティの変更を監視する

innerHTML の変更を聞いていない可能性もあり__defineSetter__ますが、値を設定する元の処理が何らかの形で妨げられているのではないかと考えています。

ありがとう!

4

3 に答える 3

0

面白そうな別の Web ページを見つけましたが、自分のやりたいことがうまくできませんでした: http://www.refactory.org/s/recent/tag/accessors

今のところ、回避策を見つけることにしました。属性の変更をチェックするタイマーと、それをサポートするブラウザーの属性変更イベントを備えたものです。

しかし、誰かが質問の解決策を見つけたら、投稿してください:)

于 2010-05-27T14:30:52.210 に答える
0

わかりました更新。MSDN でこのページを見つけました。まさに必要なものが含まれています: http://msdn.microsoft.com/en-us/library/dd229916(VS.85).aspx

しかし、Object.getOwnPropertyDescriptor物事を行う方法は明らかにIEでのみ機能します。残念。どんなアイデアでも大歓迎です。

于 2010-05-27T12:40:30.537 に答える
0

その shim コードは実際にはライトスルーしません。プロパティを設定すると、値はウォッチ ラッパーにのみ記憶され、基になるオブジェクトには渡されません。プロパティに副作用がない純粋な JavaScript オブジェクト用に設計されています (innerHTMLの場合は DOM の変更など)。

プロトタイプのセッターを直接呼び出す方法がないため、ライトスルーにするのは面倒です。プロパティを一時的に削除し、基になるプロパティに書き込み、元の場所に戻す必要があります。

ただし、IMO を追求する価値はありません。DOM ノードは「ホスト オブジェクト」になることが許可されているため、ネイティブ JavaScript オブジェクト プロパティ関数がそれらで機能するという保証はまったくありません。

(いずれにせよ、Objectプロトタイプに新しいメンバーを追加することは、一般的に本当に悪い考えと見なされます。)

innerHTML の変更をリッスンしない原因になる可能性があります

それが一番だと思います、はい。

于 2010-05-27T11:15:51.747 に答える