Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript TinyMCE保持隐藏状态(uvw对话框打开)_Javascript_Css_Tinymce - Fatal编程技术网

Javascript TinyMCE保持隐藏状态(uvw对话框打开)

Javascript TinyMCE保持隐藏状态(uvw对话框打开),javascript,css,tinymce,Javascript,Css,Tinymce,好的,我已经开发了一个很好的tinymce解决方案,我通过js以编程方式创建和销毁所有tinymce实例——因此,我知道这可能不是tinymce实现的日常使用——但基本上它就像一个魅力 现在,在我给你具体的示例代码之前,我将解释我的奇怪问题:我的一个朋友是我制作的在线工具的超级用户,他每天创建/销毁数百个tinymce实例 有时,在工作数小时后,他会有这样的行为,当他按下“编辑”按钮时,tinymce不会出现。我从来没有成功过,我自己复制了它——但是有一天,在teamviewer会议上,当错误已

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

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

有时,在工作数小时后,他会有这样的行为,当他按下“编辑”按钮时,tinymce不会出现。我从来没有成功过,我自己复制了它——但是有一天,在teamviewer会议上,当错误已经发生时,我能够看到他的屏幕和页面(使用firebug)

所以,很糟糕,我无法通过javascript代码进行完整的调试(因为在这种情况下,当您点击f5一次时,错误消失,并且需要几个小时才能再次获得)->我意识到,当错误发生时->tinyMCE对象本身中的所有内容似乎都正常->DOM渲染中的所有内容也正常->但是,从某个奇怪的css导入文件中,突然出现了如下定义:

html.uvw-dialog-open object, html.uvw-dialog-open iframe, html.uvw-dialog-open embed {
    visibility: hidden;
}
这导致tinymce的主面板无法显示,tinymce的任何内容都不可见。。杀死和重新创建实例并不能在这一刻修复这个bug,你必须按f5,重新加载后,你甚至找不到这个css定义(或者,至少,我无法通过teamviewer和他的小笔记本电脑)

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

html.uvw-dialog-open object, html.uvw-dialog-open iframe, html.uvw-dialog-open embed {
    visibility: visible !important;
}
从那时起。。。好几个星期过去了->但是今天,我的朋友又打电话给我,告诉我,他再也见不到蒂尼姆斯了。。我几乎要哭了,你可以想象:D

好的。。在写下并重新阅读了所有这些行之后->我意识到我的修复程序不起作用了。。。两者都是相同的定义,如果它们出现在同一级别(文件,而不是内联)。。我想可能是最后一场比赛赢了,新的、延迟加载的tinymce文件会是什么样的呢。。因此,让内联可见性更好:可见;在tinymce的init_instance_回调上

但是,在我绝望的时候,我想我会把一切都写在stackoverflow->也许有人知道这个问题的真正原因,然后。。你们是我所知道的最棒的开发者:杰比

思想不仅仅是一个明确的答案

听起来像是一个内存泄漏问题,因为在一个长寿命的页面中有很多javascript/DOM活动

您可能没有做错什么,也不太可能找到真正的原因,但是您可以采取某些措施:

  • 尝试使tinymce实例可重用,而不是每次都销毁和创建新实例
  • 定期对页面请求进行重新服务—在重新服务的页面中重现整个文档状态(DOM和javascript环境)可能是一个挑战

大量的工作,不保证我会害怕。

很好,非常感谢您分享您的想法-第一点是一个很好的论点。。到目前为止,我从未想过要重复使用我的实例,我想。。当它是一个内存泄漏,我认为你在这一点上是正确的,这种方法将是最好的方式来避免它。。第二点,我想我不明白你的真正意思:D->目前我做了一个讨厌的黑客;在init_instance_回调中,我将添加一个延迟为100ms的内联“visibility:visible”,因此这肯定会覆盖当时文件导入中的“错误”css Jebbie,第二点重新表述。。。采取措施缩短页面寿命,例如,每(比如)30次用户交互,或者每(比如)15分钟后的第一次交互,安排javascript刷新页面。这本身很简单,但您需要确保在刷新的页面中重新创建DOM的当前状态(显示的内容和未显示的内容)和javascript环境(变量、对象和闭包)。除非有人知道一种简单、可靠的技术,否则页面状态的重新创建可能非常复杂。