我正在開發一個應用程序,它使用TinyMCE編輯器來允許用戶修改內容。我開發了一個Prototype.js類,它在初始化時生成一個唯一的ID並使用該ID在<div>
上創建一個TinyMCE編輯器。下面是一些相關的代碼:什麼可能導致JavaScript中的內存損壞?
Region = Class.create(
{
initialize: function(options)
{
this._editorReady = false;
this._index = Region.nextIndex++;
this._uid = com.digitalfruition.Customizer.TypeRegion.uidPrefix+this._index;
Region.instances.push(this);
this.setupTinyMCE();
},
uid: function()
{
return this._uid;
},
index: function()
{
return this._index;
},
在很多地方,我會指Region
的uid()
,例如,當事件TinyMCE的編輯器內發生(例如,選擇更改)我的處理程序給出編輯者的ID。我經常會做的事:
var index = Region.instances.invoke('uid').indexOf(uid);
要查找實際Region
實例反映的事件發生在接口
我只設置任何給定的Region
一旦的_uid
財產。我確信這一點。
但是在Firefox 9.0.1中,我看到了很奇怪的行爲。當事件發生時,他們發現的編輯器無法找到,因爲上面代碼中的index
是-1
。在Firebug檢查後,我看到了這一點:
這些都是調試消息從我的代碼,與該地區的this.uid()
值一起記錄各種東西(的地區在這種情況下,高度)。 內存似乎已損壞!,你甚至可以看到它發生的地方,第一個圈出來的日誌條目是正確的,而後面的條目是錯誤的。
相同的代碼在Safari和Chrome中正常工作。到目前爲止,只有火狐9.0.1似乎受到影響......
爲了進一步檢查,我在Firebug控制檯運行此:
>>> com.digitalfruition.Customizer.TypeRegion.instances.invoke('uid');
["�ᔮ��蒦ᓤ�瀀魳ᓪ�倀⛺ᓪ�懷�eg����遀"]
這是沒有意義的我。什麼可能導致這樣的JavaScript內存損壞?我怎麼去解決這種情況呢?
如果您想問我任何問題,我在[JavaScript聊天](http://chat.stackoverflow.com/rooms/17/javascript)! – Josh
這個'com.digitalfruition.Customizer.TypeRegion'的東西來自哪裏,順便說一下?它是一個純JavaScript對象嗎? – dyoo
@dyoo對不起,那還不清楚,是嗎? :)這是我的代碼示例中的Region對象;我只是縮短了我的問題的代碼。 – Josh