2017-04-14 11 views
0

私はドキュメントやコメントのない大きなアプリケーションで作業しています。 IEとFirefoxとChromeの動作には違いがあります。それをデバッグするには、プロパティが変更されている場所を見つけなければなりません(tinymce.editors.length、FirefoxやChromeでは作成されていないので、tinymceエディタの作成場所を調べる必要があります) 。現時点では、盲目的にすべてのスクリプトの周りにブレークポイントを置くことが唯一の選択肢だと思われますが、何万行もあるので、他のアイデアは高く評価されます。IEでオブジェクト値がいつ変化するかを見つける方法

+0

ソースコードでctrl-f(find)を使用し、文字列 'tinymce.editors.length'がそこに表示されることを願ってください。それとも、ミニコードですか?あなたはまた、私が推測する開始プログラム全体をステップインすることができます。 – Shilly

+0

@Silly変数はコードに表示されず、スクリプト自体によって変更されず、外部ライブラリ(google tinymce)への呼び出しであり、作成されたエディタの数に関する情報が含まれています。 init関数へのすべての呼び出しの周りにブレークポイントを設定した後でも、それらがどこに作成されているかを見つけます。 – Xyzk

+0

tinymceへのリンクはありますか?そのパスは文字列としてどこかに現れなければならないので、コード自体や設定ファイルの中に入れてください。または他の文字列では、あなたはtinymceを識別できますか?それ以外の場合は、ネットワークタブとデバッガ内のオブジェクトウォッチを見ているだけです。 – Shilly

答えて

2

TinyMCE用のスクリプトを読み込むと、ブラウザにグローバルオブジェクトが作成され、tinymceという名前になります。このスクリプトを読み込むことによって、このオブジェクトが作成されます。

tinymceのオブジェクトには、editorsという名前の配列があります。 TinyMCEエディタはこの配列を使用して、Webページ上のすべてのエディタインスタンスを追跡します。 TinyMCEのインスタンスを初期化するたびに配列に追加され、TinyMCEのインスタンスを削除するたびに配列から削除されます。あなた自身で配列tinymce.editorsを操作する必要はありません。

TinyMCEのインスタンスを初期化する最も一般的な方法は、init()関数です。それの非常に単純な例は、ここで見つけることができます:

https://www.tinymce.com/docs/get-started/first-steps/#step2initializetinymceaspartofawebform

...とAPI自体ここに文書化されています

https://www.tinymce.com/docs/api/tinymce/root_tinymce/#init

私が見ているアプリケーションのソースコードを見直しますinit()メソッドを使用して、エディタがインスタンス化されるコードの場所を特定します。

+0

各initでブレークポイントを設定すると、editors.lengthが終了しても変わらないように見える。しかし、 "tinymvc.editors.length;"と入力するとドキュメントが完全にロードされた後、IEコンソールには4があることが明確に述べられています。エディタがinitの直後に追加されているのか、あるいは将来他の時点で追加されるのかを知っていますか? – Xyzk

+0

'init()'呼び出しは非同期ですので、 'init()'を呼び出した直後に長さをチェックすると、まだ配列に登録されていないと驚くことはありません。 –

関連する問題