2

わかりました、皆さん、ここは難しい問題です...

このページを参考に。

Firefox (バージョン 3.5) を使用すると、サーバーの出力がページにランダムに表示されないように見えます。この問題が Safari または IE で発生することは確認していません。問題を発生させる最善の方法は、ページを約 10 回リロードすることです。それまでに発生しているはずです。一度発生すると、ページを変更するまで、その後の更新で引き続き発生します。

問題は文字通り、ブラウザーが出力 (コード) を表示しないことです。ソースを表示すると、適切なコードがすべて表示されますが、ブラウザーには空白の白いページが表示されます。Web 開発者および firebug プラグインには、問題を示すエラーは表示されません。これを別のシステムと OS でテストしたところ、そのシステムの Firefox でも発生します。

この問題は、TinyMCE (テキストエリア用のリッチ テキスト エディター JavaScript ライブラリ) がプロジェクトに追加されるまで発生しませんでした。ただし、TinyMCE は機能する必要があります。

これが紛らわしい問題であることは承知していますが、何がこの重大な問題を引き起こしているのか完全にわかりません。前もって感謝します。

編集:それが何か助けになれば...スタイルシートソースを存在しないもの(xxx.css)に変更してcssファイルエラーを引き起こした場合、ページは問題なく継続的に表示されることに気付きました(関連するcssを除いて) src の変更により表示されません)。また、いくつかの悪いコードで単純な javascript エラーを引き起こすと、ページが継続的に適切に読み込まれることに気付きました (もちろん、javascript がページで実行されていないことに加えて)。

編集#2:すべての<script>タグを「修正」の末尾に移動<body>すると(まあ、非表示になります)、このエラーが発生し、ページが正常に表示されます。バンドエイド。

4

12 に答える 12

2

Firebug は、タグが空白として起動したときにタグが空であると報告するため、JavaScript の 1 つがページ コンテンツを削除しているように見えます。

それがどれであるかを知る唯一の方法は、それらを無効にしてから、問題が治まるかどうかを確認することです.

また、下部にある document.write cruft との競合状態になる可能性があります。Google には独自のやり方があることは知っていますが、document.write は 1995 年です。

Firebug もコンソールでエラーをキャッチしました。

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

これがどこから来たのかわかりません。

また、インライン JavaScript がたくさんあることに注意してください。これは一般的に決して良いことではありません。

遅延ロード?

実験として、javascript の遅延読み込みを試すことができます。つまり、適切なすべてのタグをページ内のできるだけ低い位置に移動して、読み込みやレンダリングが停止しないようにします。ただし、スタイルシートの参照は上部に残してください。

以前に見たがいつだったか思い出せない問題

PHP で gzip された 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 フィルターエスケープ:'htmlall'を使用していました。これは、TinyMCE 対応のテキストエリア送信コンテンツを表示前に変換していました。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

私はこれとまったく同じ問題を抱えていました。ページは 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

私は FF 3.5 でさまざまなブラウザー サイズを使用して、ナビゲート、更新、および一般的ないじりに最善を尽くしましたが、正直なところ、あなたのサイトを非表示にすることはできません! 毎回表示されていました。

于 2009-07-10T06:59:17.490 に答える
0

あなたのサイトで「Page Speed Activity」を実行しましたが、毎回 6.5 秒を使用しており、tinyMCE gzip は毎回その時間の約 70% を占めていました。tinyMCE のすべての機能が必要ない場合は、別のエディターを探すことをお勧めします。

弟の punyMCE を見たことがありますか?

全然違うものかもしれませんが。ソースを見つけるために一度に1つのJSを無効にして、ケントが提案するようにしてみてください...

于 2009-07-10T07:04:55.027 に答える
0

私はこれを再現できます、確かに奇妙です。私が気付いた唯一の問題は、ページが空白になると、firebug が自己終了 body タグを表示することです

コードの先頭に大量の JavaScript がありますが、すべて必要ですか? id をすべて削除してから、一度に 1 つの関数を追加して、問題の原因となっている関数を確認します。それは間違いなく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 構造を尊重するバリアントで解析することを時折選択する場合、それが問題になる可能性があります。(これらの異なる解析の決定は、ネットワークのタイミングと、1 つのパケットでブラウザーに到着する HTML の量の結果である可能性があります) ページのコンテンツ全体が CDATA ブロック内に収まります!

これをテストする 1 つの方法は、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>

(明らかでない場合は、/* ]]> */そこを含む1行を追加しました)

于 2009-07-10T07:09:03.367 に答える
0

最初に試すことは、すべての FireFox アドオンをオフにして、これで問題が解決するかどうかを確認することです。その場合は、一度に 1 つずつオンにすることで、この動作をトリガーしているアドオンを見つけることができます。

于 2009-07-10T07:11:22.567 に答える