好吧,伙计们,这是一个艰难的...
参考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>
个标签(嗯,隐藏)此错误,页面正常显示。创可贴。
答案 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的一些问题。我发现这些建议很有帮助:
答案 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错误。