我正在开发一个应用程序,它使用TinyMCE编辑器,以允许用户修改内容。我已经开发了一个Prototype.js类,它在初始化时生成一个唯一的ID,并使用该ID在<div>
上创建一个TinyMCE编辑器。
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
实例。
对于任何给定的_uid
Region
属性,我只设置过一次。这一点我很确定。
但在Firefox 9.0.1中,我看到了非常奇怪的行为。当事件触发时,将找不到它们触发的编辑器,因为上面代码中的index
是-1
。在Firebug中检查后,我看到了以下内容:
这些是来自我的代码的调试消息,记录各种内容(在本例中是区域的高度)以及区域的this.uid()
值。内存似乎已经损坏了!,你甚至可以看到它发生在哪里,第一个圈出的日志条目是正确的,后面的是错误的。
同样的代码在Safari和Chrome中运行良好。到目前为止,似乎只有Firefox 9.0.1受到影响。
为了进一步检查,我在Firebug控制台中运行了以下命令:
>>> com.digitalfruition.Customizer.TypeRegion.instances.invoke('uid');
["�ᔮ��蒦ᓤ�瀀魳ᓪ�倀⛺ᓪ�怀�eg����遀"]
这对我来说没有任何意义。在JavaScript中,是什么导致了像这样的内存损坏?我该如何对这种情况进行故障排除?
发布于 2012-01-25 09:27:48
有没有可能您的某个文件是用不同的编码保存的?我会看看这一点,也许还会确保您使用正确的编码和mime类型为文件提供服务。
最好做一些测试,在生成uid
值时对其执行console.log()
操作,以确认在创建对象后确实发生了损坏。我怀疑它们是在创建的时候发生的。
https://stackoverflow.com/questions/8996716
复制相似问题