为什么两个页面,100%相同的代码,包括相同的style.css有不同的输出?

时间:2012-10-06 12:25:16

标签: php html css

我遇到一种奇怪的情况,即打印网站导航部分的功能在一个页面上输出的输出略有不同。我刚开始添加之前我没有宣布过。打印navi的函数在两个页面上都被赋予相同的参数。但是有一页正在输出额外的中断或额外的利润或其他东西。

所以我花了很多时间搞乱了style.css,但无论如何,一页总是在链接之间有更多的空间。改变风格影响了两个页面,但是一个页面总是有更多的间距或边距或间隔或者它是什么。

然后我确保两个页面都没有xml验证错误,在这个意义上使它完美,但是一个页面在链接之间有更多空格。当打印纳粹的真正相同的功能正在被召唤......

最后我有了它,我复制了所有页面的代码(页面正确显示)并将其粘贴到页面b的代码中(粘贴在b的旧代码上)并且我保存并且我的下巴敬畏,页面b是仍然显示额外的空间。

要清楚,2个文件,文件中的代码是100%相同的,只有文件的名称不同。但是那个上的输出仍然是双倍间距。我再次重申,两个文件加载相同的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 个答案:

答案 0 :(得分:1)

1。)使用相同的参数调用相同的函数 not 必然会产生相同的输出。可能还有其他因素会影响输出,例如环境变量,软件版本以及和。

因此,不是以相同的方式调用函数这一事实是有意义的,但如果输出真的相同,则。你检查过了吗?你没有提到......

2.。)在两个页面上添加相同样式定义文件的事实 not 意味着两个站点上的wohle样式定义相同。其他样式定义可能会干扰。首先,显然内置样式规则的浏览器可能不同,然后可能包含其他样式文件。这种情况总是与它们被包括在内的顺序相混淆。如果某些其他样式定义在样式后验证,则结果可能会有所不同。

您必须使用浏览器内置调试器检查您看到的实际结果。

答案 1 :(得分:0)

如果具有相同输入的相同函数给出不同的输出,则该函数是所谓的nondeterministic function

因为如果函数是非确定性的,这通常是没有用的,因为你不能以确定的方式使用它(例如我有问题A,我使用函数F而不是处理问题A,除非F是罚款不清楚它是做什么的。)

因此,使函数不确定的这些不确定性通常是导致应用程序失败的缺陷。或者只是输出不同的输出。

这可能是因为隐藏的依赖关系(例如,有一个编码参数注入到您通过php.ini指定的函数内部使用的函数)或静态状态(HTTP请求不同,因此函数的输出不同在HTTP请求和浏览器和服务器响应的上下文中。

答案 2 :(得分:0)

此功能不是问题。在其中一个页面上,您指定了DOCTYPE而您忘记在另一个页面上执行此操作。这就是为什么浏览器对它的解释不同。请记住始终将DOCTYPE添加到您的页面中(除非您的代码是HTML5和XML表示法)。 所以,添加:

<!doctype html>

位于每个页面的顶部,因此呈现方式与http://mrhowtosay.com/translated页面上的呈现方式相同。如果需要,然后应用一些美学变化。如果你坚持没有指定DOCTYPE的页面,你就永远无法确定输出会是什么样子,并且很有可能在不同的浏览器上会有所不同。

答案 3 :(得分:0)

看来,你的问题确实与UTF-8有关。我用firebug分析了你的示例页面,结果显示,html页面包含 UTF-8 BOM-header ,但未翻译的页面包含两次!

文件开头的这3个字符()由编辑器编写,但不会显示。使用HEX编辑器,您可以看到差异,您也可以转到文件属性并查看文件大小,您会发现它们略有不同。

我建议将文件保存为UTF-8 ,不带 BOM表头。特别是双头使IE切换到quirks-mode(你可以按F12让IE中的开发者工具看到它),这会导致不同的渲染。在任何情况下,双BOM表头都是错误的。

编辑:

刚刚为checking utf-8 BOM and header问题找到了一个很棒的工具。