1

好的,我开发了一个不错的 tinymce 解决方案,我通过 js 以编程方式创建和销毁所有 tinymce 实例 - 所以,我知道这可能不是 tinymce 实现的日常使用 - 但基本上它就像一个魅力。

现在,在我给你具体的示例代码之前 - 我将解释我的奇怪问题:我的一个朋友是我制作的在线工具的超级用户,他在白天创建/销毁数百个 tinymce 实例。 ..

有时,在工作数小时后,他的行为是,当他点击“编辑”按钮时,tinymce 不会出现。我从来没有成功过,我自己重现了它 - 但是有一天,在一个团队查看器会话中,当错误已经发生时,我能够查看他的屏幕和页面(使用萤火虫)。

所以,很糟糕,我无法通过 javascript 代码进行完整的调试(因为在这种情况下,当你按一次 f5 时,错误就会消失,并且需要几个小时才能再次得到它)-> 我意识到, ,当错误发生时-> tinyMCE-object 本身的一切似乎都正常-> DOM 渲染中的一切似乎都还好-> 但是,从一些奇怪的 css-import-file 中,突然出现了这样的定义:

html.uvw-dialog-open object, html.uvw-dialog-open iframe, html.uvw-dialog-open embed {
    visibility: hidden;
}

这导致tinymce的主面板不会显示,并且tinymce的任何内容都不再可见.. 杀死和重新创建实例此时不会修复该错误,您必须按 f5 并在重新加载后,您甚至再次找不到这个 css 定义(或者,至少,我无法通过 teamviewer 和他那破烂的小型笔记本电脑)

所以,唯一想到的是我自己的 css 中的一个丑陋的 hack,告诉这个:

html.uvw-dialog-open object, html.uvw-dialog-open iframe, html.uvw-dialog-open embed {
    visibility: visible !important;
}

而且,从那以后……已经好几个星期了->但是今天,我的朋友再次打电话给我,告诉我,他再也看不到tinymce了……我几乎要流泪了,您可以想象:D

好的..在编写和重新阅读所有这些行之后->我意识到我的修复不起作用...两者都是相同的定义,如果它们出现在同一级别(文件,而不是内联)..可能最后- match-wins 我猜,什么是新的、延迟加载的 tinymce 文件。所以它肯定会更好,使内联可见性:可见;在tinymce的init_instance_callback ...

但是,在我绝望的情况下,我想我会在 stackoverflow 上写下所有内容 -> 也许有人知道这个问题的真正原因,而且.. 你们是我所知道的最棒的开发人员:D

4

1 回答 1

2

杰比,

想法不仅仅是一个明确的答案......

由于长寿命页面中存在大量 javascript/DOM 活动,这听起来像是内存泄漏问题。

您可能没有做错任何事,也不太可能追查真正的原因,但是您可以采取某些措施:

  • 尝试使您的 tinymce 实例可重用,而不是每次都破坏和创建新实例。
  • 定期请求重新提供页面 - 在重新提供的页面中重现整个文档状态 - DOM 和 javascript 环境可能是一个挑战。

大量的工作,并不能保证我很害怕。

于 2012-09-17T19:28:26.970 回答