0

Webサイトのナビゲーションセクションを印刷する関数が、あるページで他のページとはわずかに異なる出力を提供するという奇妙な状況がありました。私が以前に宣言していなかったものを追加していたときに最初に始まりました。ナビを出力する関数には、両方のページで同じ引数が与えられました。それでも、1ページは余分な休憩や余分な余白などを付けて出力していました。

だから私はstyle.cssをいじるのに多くの時間を費やしましたが、何があっても、1ページは常にリンクの間にもっと多くのスペースがありました。スタイルを変更すると両方のページに影響しましたが、1つのページには常に間隔、余白、区切りなどがありました。

次に、両方のページにxml検証エラーがないことを確認し、その意味で完璧にしました。それでも、1つのページにはリンク間のスペースが多くありました。ナビを印刷するためのまったく同じ機能が呼び出されているとき...

ついに私はそれを手に入れました、私はページaのコード(ページが正しく表示されている)をすべてコピーし、それをページbのコードに貼り付け(bの古いコードを貼り付け)、保存して驚いたことに、ページbはまだ表示されています余分なスペース。

明確にするために、2つのファイル、ファイル内のコードは100%同一であり、ドキュメントの名前のみが異なります。それでも、1つの出力はまだダブルスペースです。そしてもう一度繰り返しますが、両方のファイルが同じstyle.cssをロードしているにもかかわらず、出力が異なります...

誰かがこれがどのように可能であるかを私に知らせてください。そしてそれを修正する方法をさらに良くします。

コード例がどのように必要かはわかりませんが、ナビを出力する関数を紹介します

    function navigation ($str){
    settotals(0);
    if ($_SESSION['lang'] == "eng")
    {   
    $home = "Home";
    $login = "Login";
    $insert = "Insert";
    $post = "Post Request";
    $ranks = "Ranks";
    $score = "Scoreboard";
    $register = "Register";
    $howtoread = "Read Japanese";
    $contact = "Contact Us";
    $engreq = "English Requests";
    $japreq = "Japanese Requests";
    $japtra = "Japanese Translations";
    $engtra = "English Translations";
    $mytran = "My Translations";
    $mylikes = "My Likes";
    $likesrec = "Likes Received";
    $pref = "Preferences";
    }
    else
    {
    $home = "ホーム";
    $login = "ログイン";
    $insert = "入力";
    $post = "リクエストを掲示";
    $ranks = "ランク";
    $score = "スコアボード";
    $register = "登録";
    $howtoread = "日本語の読み方";
    $contact = "コンタクト";
    $engreq = "英語のリクエストリスト";
    $japreq = "日本語のリクエストリスト";
    $japtra = "英和訳リスト";
    $engtra = "和英訳リスト";
    $mytran = "自分の翻訳リスト";
    $mylikes = "「いいね」を押したリスト";
    $likesrec = "「いいね」をもらったリスト";
    $pref = "選択肢";
    }
    ?>
    <img border="0" src="<? echo $str; ?>img/blankbutton.jpg" width="152" height="26"/>    <p><font face="Arial" size="4">
        <a href="http://mrhowtosay.com">&nbsp;<?echo $home?></a><br /><img border="0" src="<? echo $str; ?>img/line.gif" width="137" height="1"><br />
        <a href="<? echo $str; ?>login">&nbsp;<?echo $login?></a><br /><img border="0" src="<? echo $str; ?>img/line.gif" width="137" height="1"><br />
        <?if ($_SESSION['rights'] >= 4)
       {?>
        <a href="<? echo $str; ?>insert" >&nbsp;<?echo $insert?></a><br /><img border="0" src="<? echo $str; ?>img/line.gif" width="137" height="1"><br />
    <? }?>
    <a href="<? echo $str; ?>search" >&nbsp;<?echo $post?></a><br /><img border="0" src="<? echo $str; ?>img/line.gif" width="137" height="1"><br />    
        <a href="<? echo $str; ?>ranks">&nbsp;<?echo $ranks?></a><br /><img border="0" src="<? echo $str; ?>img/line.gif" width="137" height="1"><br />
        <a href="<? echo $str; ?>score">&nbsp;<? echo $score?></a><br /><img border="0" src="<? echo $str; ?>img/line.gif" width="137" height="1"><br />
        <a href="<? echo $str; ?>register">&nbsp;<?echo $register?></a><br /><img border="0" src="<? echo $str; ?>img/line.gif" width="137" height="1"><br />
        <a href="<? echo $str; ?>read">&nbsp;<?echo $howtoread?></a><br /><img border="0" src="<? echo $str; ?>img/line.gif" width="137" height="1"><br />
        <a href="<? echo $str; ?>contact">&nbsp;<?echo $contact?></a><br />
        </font>
        <font face="Arial" size="2">
 <br />
    <img border="0" src="<? echo $str; ?>img/Browse.gif" width="152" height="26"><br /><br />

    &nbsp;<img border="0" src="<? echo $str; ?>img/arrowleft.gif" width="11" height="11"/>   <a href="<? echo $str; ?>translated?mode=1&amp;pagenum=1&amp;set=1#down">&nbsp;<?echo $engtra?></a><br /><br />

    &nbsp;<img border="0" src="<? echo $str; ?>img/arrowleft.gif" width="11" height="11"/><a href="<? echo $str; ?>translated?mode=2&amp;pagenum=1&amp;set=1#down">&nbsp;<?echo $japtra?></a><br /><br />

       <img border="0" src="<? echo $str; ?>img/new.gif" width="152" height="26"><br />
  <br />
  &nbsp;<img border="0" src="<? echo $str; ?>img/arrowleft.gif" width="11" height="11"/>  
        <a href="<? echo $str; ?>translated?mode=3&amp;pagenum=1&amp;set=1#down">    <?echo $engreq?></a> 
        <br /><br />
 &nbsp;<img border="0" src="<? echo $str; ?>img/arrowleft.gif" width="11" height="11"/>  
   <a href ="<? echo $str; ?>translated?mode=4&amp;pagenum=1&amp;set=1#down"><?echo $japreq?></a>
  <br /><br />


  <?if ($_SESSION['username'])
{ ?>
<img border="0" src="<? echo $str; ?>img/promo.gif" width="152" height="26"><br /><br />

&nbsp;<img border="0" src="<? echo $str; ?>img/arrowleft.gif" width="11" height="11"/>   <a href="<? echo $str; ?>translated?mode=5&amp;set=1&amp;pagenum=1&amp;user=<?echo $_SESSION['username'];?>#down"><?echo $mytran?></a>

<br /><br />&nbsp;<img border="0" src="<? echo $str; ?>img/arrowleft.gif" width="11" height="11"/>   <a href="<? echo $str; ?>translated?mode=6&amp;set=1&amp;user=<?echo $_SESSION['username'];?>#down"><?echo $mylikes;?></a>


<br /><br />&nbsp;<img border="0" src="<? echo $str; ?>img/arrowleft.gif" width="11" height="11"/>   <a href="<? echo $str; ?>translated?mode=7&amp;set=1&amp;user=<?echo $_SESSION['username'];?>#down"><?echo $likesrec;?></a>


<br /><br />&nbsp;<img border="0" src="<? echo $str; ?>img/arrowleft.gif" width="11" height="11"/>   <a href="<? echo $str; ?>preferences"><?echo $pref?></a>

      <?
}
?></font></p>
  <font face="Arial" size="2"><?
  if ($_SESSION['username'])
  signature($_SESSION['username'],"");?></font><br />
  <?
 }
4

4 に答える 4

1

1.)同じ引数を使用して同じ関数を呼び出しても、必ずしも同じ出力が生成されるわけではありません。環境変数、ソフトウェアバージョン、およびなど、出力に影響を与える他の要因がある可能性があります。

したがって、関数が同じ方法で呼び出されるという事実は重要ではありませんが、出力が実際に同一である場合に限ります。確認しましたか?あなたはそれについて言及しません...

2.)両方のページで同じスタイル定義ファイルを追加するという事実は、wohleスタイル定義が両方のサイトで同一であることを意味するわけではありません。他のスタイル定義が干渉する可能性があります。まず、ブラウザに組み込まれているスタイルルールが異なる場合があり、次に他のスタイルファイルが含まれている場合があります。そのような状況は、それらが含まれる順序に対して常に重要です。スタイルの後に他のスタイル定義が検証された場合、結果は異なる可能性があります。

ブラウザに組み込まれているデバッガを使用して、実際に表示される結果を確認する必要があります。

于 2012-10-06T12:48:24.503 に答える
0

ここでは機能は問題ではありません。一方のページで、を指定しDOCTYPEましたが、もう一方のページでそれを行うのを忘れました。そのため、ブラウザによる解釈が異なります。常にページにを追加することを忘れないでDOCTYPEください(コードがHTML5およびXML表記の場合を除く)。したがって、次を追加します。

<!doctype html>

すべてのページの上部にあるため、レンダリングはページと同じになりhttp://mrhowtosay.com/translatedます。次に、必要に応じて美的変化を適用します。指定されていないページに固執するDOCTYPEと、出力がどのように表示されるかを実際に確認することはできず、別のブラウザで出力が異なる可能性が高くなります。

于 2012-10-06T14:46:41.833 に答える
0

同じ入力を持つ同じ関数が異なる出力を提供している場合、その関数はいわゆる非決定論的関数です。

関数が非決定論的である場合、決定論的な方法で使用できないため、これは役に立たないことがよくあります(たとえば、問題Aがある場合、問題Aを処理できるよりも関数Fを使用します。Fが明確でない限り、問題ありません。します)。

したがって、関数を非決定論的にするこれらの不確実性は、多くの場合、アプリケーションの失敗につながる可能性のある欠陥です。または、あなたの場合とは異なる出力。

これは、非表示の依存関係(たとえば、php.iniを介して指定された関数内で使用する関数に挿入されたエンコーディングパラメーターがある)または静的状態(HTTP要求が異なるため、関数の出力がコンテキスト内で異なるため)が原因で発生する可能性がありますHTTPリクエストとブラウザとサーバーのレスポンスの)。

于 2012-10-06T12:47:39.233 に答える
0

あなたの問題は確かにUTF-8に関係しているようです。サンプルページをfirebugで分析したところ、htmlページにUTF-8 BOMヘッダーが含まれていることがわかりましたが、未翻訳のページには2回含まれています。

ファイルの先頭にあるこれらの3文字()はエディターによって書き込まれますが、表示されません。HEXエディターを使用すると、違いを確認できます。また、ファイルのプロパティに移動してファイルサイズを確認すると、わずかに異なることがわかります。

私の推奨は、 BOMヘッダーなしでファイルをUTF-8として保存することです。特に、ダブルヘッダーにより、IEはクァークズモードに切り替わり(を押しF12てIEの開発者ツールに表示させることができます)、これによりレンダリングが異なります。いずれの場合も、ダブルBOMヘッダーは間違っています。

編集:

utf-8BOMとヘッダーの問題をチェックするための素晴らしいツールを見つけました。

于 2012-10-06T19:55:02.663 に答える