我正在开发一个应用程序,它使用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