0

我遇到了一个奇怪的情况,其中打印网站导航部分的功能在一个页面上的输出与另一个页面上的输出略有不同。第一次开始时我添加了我之前没有声明过的内容。打印导航的函数在两个页面上都被赋予了相同的参数。然而,一页正在输出它,带有额外的中断或额外的边距或其他东西。

所以我花了很多时间弄乱style.css,但无论如何,一页总是在链接之间有更多的空间。更改样式会影响两页,但一页总是有更多的间距或边距或中断或其他任何内容。

然后我确保两个页面都没有 xml 验证错误,在这个意义上使它完美,仍然一页在链接之间有更多的空间。当调用与打印 NAVI 完全相同的功能时...

终于我有了它,我复制了所有页面 a 的代码(页面显示正确)并将其粘贴到页面 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

4 回答 4

1

1.) 使用相同的参数调用相同的函数不一定会产生相同的输出。可能还有其他因素会影响输出,例如环境变量、软件版本和和。

因此,函数调用方式相同这一事实并不令人感兴趣,但前提是输出确实相同。你检查了吗?你不提那个...

2.) 在两个页面上添加相同的样式定义文件这一事实并不意味着两个站点上的 wohle 样式定义相同。其他样式定义可能会干扰。首先,显然浏览器内置的样式规则可能不同,然后可能包含其他样式文件。这种情况对于它们被包含的顺序总是至关重要的。如果在您的样式之后验证了其他样式定义,那么结果很可能会有所不同。

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

于 2012-10-06T12:48:24.503 回答
0

如果具有相同输入的相同函数给出不同的输出,则该函数就是所谓的非确定性函数

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

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

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

于 2012-10-06T12:47:39.233 回答
0

功能不是这里的问题。在其中一页上,您指定了DOCTYPE,而在另一页上却忘记了。这就是浏览器对它的解释不同的原因。DOCTYPE请记住始终将 所以,添加:

<!doctype html>

在每个页面的顶部,因此渲染将与http://mrhowtosay.com/translated页面上的相同。然后根据需要进行一些美学更改。如果您坚持使用没有DOCTYPE指定的页面,您将永远无法确定输出会是什么样子,并且很有可能在不同的浏览器上会有所不同。

于 2012-10-06T14:46:41.833 回答
0

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

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

我的建议是,将文件保存为不带BOM 标头的 UTF-8。尤其是双标头让IE切换到了quirks-mode(你可以F12在IE中点击开发者工具查看),导致渲染不一样。在任何情况下,双 BOM 表头都是错误的。

编辑:

刚刚找到了一个很棒的工具来检查 utf-8 BOM 和 header问题。

于 2012-10-06T19:55:02.663 回答