2017-04-14 68 views
0

我正在研究一個沒有文檔或註釋的大型應用程序。 IE和Firefox和Chrome之間的行爲有所不同。爲了調試它,我必須找到一個屬性被改變的地方(tinymce.editors.length,我需要找出tinymce編輯器的創建地點,因爲它是在IE中創建的,但不是在Firefox或Chrome中創建的) 。到目前爲止,唯一的選擇似乎是盲目地在所有腳本中添加斷點,但有數以萬計的線路,因此任何其他想法都將被讚賞。如何查找對象值在IE中何時發生更改

+0

在源代碼中使用ctrl-f(find),並希望字符串'tinymce.editors.length'出現在那裏。或者它是縮小的代碼?我也可以在開始時瀏覽整個程序。 – Shilly

+0

@Silly變量不會出現在代碼中,它不會被腳本本身改變,它是對外部庫(google tinymce)的調用,它包含有關創建了多少個編輯器的信息,問題是我不能即使在對所有對init函數的調用設置了斷點之後,也可以找到它們的創建位置。 – Xyzk

+0

你有鏈接到tinymce?由於該路徑應該以字符串的形式出現,無論是在代碼本身還是在某個配置文件中。或者你可以用其他字符串來識別tinymce?否則,你一直在觀看網絡選項卡和對象在調試器內觀看。 – Shilly

回答

2

當您爲TinyMCE加載腳本時,它將在名爲tinymce的瀏覽器中創建一個全局對象。加載腳本的純粹行爲會創建此對象。對象是一個名爲editors的數組。 TinyMCE編輯器使用這個數組來跟蹤網頁上的所有編輯器實例。每次初始化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()'後立即檢查長度,如果它沒有在數組中註冊,我不會感到驚訝。 –

相關問題