2

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

在参考这个页面

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

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

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

我知道这是一个令人困惑的问题,但我完全不知道是什么导致了这个重大问题。提前致谢。

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

EDIT#2:将所有<script>标签向下移动到“修复”的尾部<body>(嗯,隐藏)这个错误并且页面正常显示。创可贴。

4

12 回答 12

2

Firebug 在它触发为空白时报告该标签为空,因此看起来您的一个 javascripts 正在删除页面内容。

知道它是哪一个的唯一方法是禁用它们,然后查看问题是否消退。

此外,它可能是与底部的 document.write 杂乱无章的竞争条件。我知道 google 有其特殊的做事方式,但 document.write 是 1995 年的。

Firebug 还在控制台中为我发现了一个错误:

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

这是从哪里来的,我不知道。

我还要注意你有很多内联javascript,这通常不是一件好事。

延迟加载?

对于实验,您可以尝试延迟加载 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;

但这可能没有帮助。

于 2009-07-10T07:01:19.560 回答
1

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

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

我猜 TinyMCE 解析器陷入了非终止递归循环,浏览器退出了。即使您不使用 Smarty,也可能值得让未过滤的数据通过 TinyMCE(当然是在非生产环境中!)看看是否有帮助。如果是这样,您可以一次加强过滤,以找出在 TinyMCE 出现问题之前可以解决的问题。

于 2010-09-10T00:28:52.880 回答
0

使用正确且记录在案的延迟加载方式。将内容添加到正文实际上并不是延迟加载,因为它仍然会阻止页面完成渲染,直到脚本被加载,换句话说,加载事件在完成之前不会触发。这只是让用户在加载所有脚本之前看到某些内容的一种方式。

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

将在您希望加载内容时压缩和加载内容,换句话说就是真正的延迟加载。最后,我在我们的服务器上也没有发现重大的性能缺陷,发送压缩脚本需要 40 毫秒,你们可能需要启用磁盘缓存。

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

于 2009-08-16T10:36:55.453 回答
0

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

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

于 2009-11-10T22:56:24.950 回答
0

我已经尽力在 FF 3.5 上使用不同的浏览器大小进行导航、刷新和处理,但老实说,我无法让您的网站消失!它每次都显示。

于 2009-07-10T06:59:17.490 回答
0

我在您的网站上运行了“页面速度活动”,每次使用 6.5 秒,tinyMCE gzip 每次占用大约 70% 的时间。如果您不需要 tinyMCE 的所有功能,我建议您寻找其他编辑器。

你看过它的小弟弟 punyMCE 吗?

不过,可能是完全不同的东西。尝试按照肯特的建议进行操作,同时禁用一个 JS 以查找源...

于 2009-07-10T07:04:55.027 回答
0

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

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

于 2009-07-10T07:08:32.353 回答
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>

(如果不明显,我添加了一行包含/* ]]> */那里)

于 2009-07-10T07:09:03.367 回答
0

尝试的第一件事是关闭所有 FireFox 插件,看看是否可以修复它。如果是这样,您可以尝试通过一次打开一个插件来查找触发此行为的插件。

于 2009-07-10T07:11:22.567 回答
0

我有这个完全相同的问题。该页面在 Firefox 中加载良好,但在 Internet Explorer 中显示源代码为白屏。

您不会相信问题出在哪里 - 在模板中,我将结束标题标签作为</h1>

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

我使用 W3C Validator 发现了问题。我怀疑这是您的同一个问题,但也许这将帮助您了解可能导致 IE 7 响应的原因。

于 2010-03-14T14:44:09.317 回答
0

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

于 2020-10-18T20:59:46.493 回答
0

上述解决方案均不适用于我的情况。我不得不使用额外的页面刷新来加载编辑器。

<script type="text/javascript">

    (function() {
        if (window.localStorage) {
            if (!localStorage.getItem('firstLoad')) {
                localStorage['firstLoad'] = true;
                window.location.reload();
            } else
                localStorage.removeItem('firstLoad');
        }
    })();

   tinymce.init({
   ...
</script>
于 2021-10-05T11:19:36.910 回答