Я разрабатываю приложение, в котором используются редакторы TinyMCE, позволяющие пользователю изменять контент. Я разработал класс Prototype.js, который при инициализации генерирует уникальный идентификатор и создает редактор TinyMCE на Во многих местах я буду ссылаться на Чтобы найти реальный экземпляр Я только когда-либо устанавливал свойство Но в Firefox 9.0.1 я наблюдаю действительно странное поведение. Когда срабатывают события, редактор, который они запускают, не может быть найден, потому что Это отладочные сообщения из моего кода, в которых регистрируются различные вещи (в данном случае высота регионов) вместе со значением региона Тот же код отлично работает в Safari и Chrome. Пока что, похоже, затронут только Firefox 9.0.1 ... Для дальнейшего изучения я запустил это в консоли Firebug: Это не имеет для меня смысла. Что могло вызвать такое повреждение памяти в 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. (например, при изменении выбора) моим обработчикам дается идентификатор редактора. Я часто делаю следующее: var index = Region.instances.invoke('uid').indexOf(uid);
Region
, отражающий интерфейс, в котором произошли события. _uid
любого заданного Регион
один раз . Я в этом уверен. индекс
в приведенном выше коде равен -1
. После проверки в Firebug я увидел следующее: this.uid ()
. Похоже, что память повреждена! и вы даже можете увидеть, где это происходит, первая запись в журнале, обведенная кружком, правильная, а последующие неправильные. >>> com.digitalfruition.Customizer.TypeRegion.instances.invoke('uid');
["�ᔮ��蒦ᓤ�瀀魳ᓪ�倀⛺ᓪ�怀�eg����遀"]