尽管有源代码,页面完全空白! (TinyMCE,FireFox)

时间:2009-07-10 06:47:35

标签: javascript firefox tinymce

好吧,伙计们,这是一个艰难的...

参考this page

使用Firefox(版本3.5)时,页面似乎会随机显示服务器的输出。我没有看到Safari或IE中出现此问题。发生问题的最好方法是重新加载页面大约10次,到那时它应该发生了,一旦它发生了 - 它将继续进行后续刷新,直到你更改页面。

问题实际上是浏览器没有显示输出(代码)。查看源代码会显示所有相应的代码,但浏览器会显示一个空白页面。 Web开发人员和firebug插件不会显示任何可能表明问题的错误。我已在单独的系统和操作系统上对此进行了测试,它也出现在该系统的Firefox中。

直到TinyMCE(用于textareas的富文本编辑器JavaScript库)添加到项目之后才出现问题。然而,TinyMCE在它应该的位置工作。

我知道这是一个令人困惑的问题,但我完全迷失了可能导致这个重大问题的原因。提前谢谢。

编辑:如果有任何帮助...我注意到如果我通过将样式表源更改为不存在的某些内容(xxx.css)导致css文件错误,该页面将连续显示没有问题(除了由于src改变而没有显示相关的css)。我还注意到,导致任何简单的javascript错误和一些错误的代码会导致页面连续正常加载(当然除了javascript没有在页面上运行)。

编辑#2 :在<script>'修正'的尾部向下移动所有<body>个标签(嗯,隐藏)此错误,页面正常显示。创可贴。

11 个答案:

答案 0 :(得分:2)

Firebug在标记为空白时报告标记为空,因此看起来您的某个javascripts正在删除页面内容。

只知道它是哪一个会禁用它们,然后看看问题是否消退。

此外,它可能是一个竞争条件,底部是document.write cruft。我知道谷歌有其特殊的做事方式,但是document.write是1995年。

Firebug在控制台中也遇到了一个错误:

 Expected identifier or string for value in attribute selector but found '#'.

这来自我无法告诉我。

我可以注意到你有一个内联javascript的 LOT ,这通常不是一件好事。

延迟加载?

对于一个实验,你可以尝试延迟加载javascript,也就是说,将所有可用的标签移动到尽可能低的页面,这样它们就不会停止加载而不会停止渲染,但将样式表引用保留在顶部。

我之前见过的问题,但不记得何时

当您使用PHP流式传输您的javascript内容时,它不会发送任何内容长度的信息。我在奇怪的时候看到过这种奇怪的行为。

我记得有一些神奇的污垢让它变得可能:

ob_start;
ob_start('ob_gzhandler');

    // Gzipped code outputted here 

 $data = ob_get_clean; 
 header("Content-Length: " . strlen( $data )); 
 print $data;
 ob_end_flush;

但那可能不太可能有所帮助。

答案 1 :(得分:1)

我只是遇到了同样的问题,一个完全空白的页面没有源输出,除了显示裸骨文档大纲的IE。我也安装了TinyMCE,我正在使用Smarty模板引擎。

我正在使用Smarty过滤器 escape:'htmlall',它在显示之前转换了启用了TinyMCE的textarea提交内容。一旦我直接将PHP调用交换到htmlspecialchars,问题就会清除。

我猜测TinyMCE解析器陷入了一个非终止的递归循环,浏览器被救了出来。即使您没有使用Smarty,也可能值得将未经过滤的数据传递给TinyMCE(当然,在非生产环境中!),看看是否有帮助。如果是这样的话,那么你可以在TinyMCE遇到问题之前逐步加强过滤,找出你可以得到的东西。

答案 2 :(得分:0)

我已尽力在FF 3.5上使用不同的浏览器尺寸进行导航,刷新并且通常都是捣蛋但我老实说无法使您的网站消失!它每次都显示出来。

答案 3 :(得分:0)

我在您的网站上运行了“Page Speed Activity”,每次使用6.5秒,每次使用tinyMCE gzip大约占用70%左右。如果你不需要tinyMCE的所有功能,我建议寻找另一个编辑器。

你看过它的小弟弟punyMCE吗?​​

但是,可能会有一些完全不同的东西。尝试肯特建议,当时禁用一个JS来找到源......

答案 4 :(得分:0)

我可以重现这一点,确实很奇怪。我注意到的唯一问题是当页面显示为空白时,萤火虫显示一个自动关闭的身体标签

代码顶部有很多javascript - 你需要全部吗? id删除所有它然后将其添加回来,一次一个函数,看看哪一个导致问题。它似乎与JS有关。

答案 5 :(得分:0)

我在你的页面中注意到了这一点:

    <script type="text/javascript">
    /* <![CDATA[ */
    tinyMCE_GZ.init({           
        doctype : '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">',
        plugins : 'style,layer,table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,media,'+ 
            'searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras',
        themes : 'advanced',
        languages : 'en',
        disk_cache : false,
        debug : false                                   
    });
    </script>

    <script type="text/javascript" src="/js/tiny_mce/jquery.tinymce.js"></script>

我没有看到任何结束]]>序列来结束CDATA块。如果firefox 3.5偶尔会选择解析你的页面而不是正常的怪癖模式,但是在一个尊重xml结构的变体中,这可能是你的问题。 (这些不同的解析决策很可能是网络时序的结果,以及有多少HTML在一个数据包中到达浏览器)页面的整个内容最终都会出现在CDATA块中!

测试此方法的一种方法是使用firebug的“HTML”标签,查看文档结构是否包含调用tinyMCE_GZ.init的脚本标记内的所有源内容。

当然,您也可以做正确的事情并关闭CDATA块,看看是否能解决问题:

<script type="text/javascript">
/* <![CDATA[ */
tinyMCE_GZ.init({           
    doctype : '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">',
    plugins : 'style,layer,table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,media,'+ 
        'searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras',
    themes : 'advanced',
    languages : 'en',
    disk_cache : false,
    debug : false                                   
});
/* ]]> */
</script>

<script type="text/javascript" src="/js/tiny_mce/jquery.tinymce.js"></script>

(如果不明显,我在其中添加了一行/* ]]> */

答案 6 :(得分:0)

首先要尝试关闭所有FireFox插件并查看是否可以解决此问题。如果是这样,您可以尝试通过一次打开一个来找到插件触发此行为的内容。

答案 7 :(得分:0)

使用适当且记录在案的延迟加载方式。将内容添加到正文实际上并不是延迟加载,因为它仍然会阻止页面完全呈现,直到脚本被加载为止,否则加载事件将不会触发直到它完成。这只是让用户在加载所有脚本之前看到内容的一种方式。

使用此方法: http://tinymce.moxiecode.com/examples/example_13.php

当您想要加载内容时,会压缩并加载内容,换句话说就是真正的延迟加载。我的服务器上最后也没有出现主要的性能缺陷,发送压缩脚本需要40ms,你们可能需要启用磁盘缓存。

此外,如果页面变空,您可能需要禁用我们用于加载脚本同步的document.write调用。使用strict_loading_mode设置。

答案 8 :(得分:0)

在初始化之后我有类似的空白页问题,显然这是doc.write的一些问题。我发现这些建议很有帮助:

http://tinymce.moxiecode.com/punbb/viewtopic.php?pid=55236

答案 9 :(得分:0)

我有同样的问题。该页面在Firefox中正常加载但在Internet Explorer中具有可见源的白色屏幕。

您不会相信问题是什么 - 在模板中,我将结束标题标记设为</h1>

所以标题标签就像这个<title>My Website Title</h1>,导致IE加载白页,在Firefox中很好。我将其更改为<title>My Website Title</title> - 问题解决了!

我使用W3C Validator发现了问题。我怀疑这是同样的问题但是这可能会帮助你了解可能导致IE 7响应的原因。

答案 10 :(得分:0)

我遇到了同样的问题,发现页面上的一个样式标签未关闭。浏览器既未显示错误,也未在服务器控制台显示任何错误。当我关闭样式标签时,页面开始变得可见。检查您的页面。这是一个html错误。