[英]why do two pages, 100% the same code, both including the same style.css have different output?
我遇到一种奇怪的情况,其中打印网站导航部分的功能在一页上的输出与另一页上的输出略有不同。 第一次开始是在我添加之前从未声明过的。 在两个页面上,打印navi的函数均具有相同的参数。 但是一页输出时有额外的中断或多余的空白。
所以我花了很多时间弄乱了style.css,但是无论如何,一页总是在链接之间有更多的空间。 更改样式会影响两页,但是一页总是有更多的间距,边距或中断或其他内容。
然后,我确保两个页面都没有xml验证错误,从某种意义上讲它非常完美,但一页仍然在链接之间留有更多空间。 当调用NAVI的功能完全相同时...
终于有了它,我复制了页面a的所有代码(页面显示正确),然后将其粘贴到页面b的代码中(粘贴在页面b的旧代码上),然后保存下来,令我赞叹不已,页面b仍在显示额外的空间。
要明确的是,有2个文件,文件中的代码是100%相同的,只是文件名不同。 但是一个输出仍然是双倍行距。 我再次重复,两个文件都加载相同的style.css,但输出却不同...
有人请让我知道这是怎么可能的。 更好的解决方法。
我真的没有看到所有例子都需要代码示例,但是我会给你打印navi的功能
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"> <?echo $home?></a><br /><img border="0" src="<? echo $str; ?>img/line.gif" width="137" height="1"><br />
<a href="<? echo $str; ?>login"> <?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" > <?echo $insert?></a><br /><img border="0" src="<? echo $str; ?>img/line.gif" width="137" height="1"><br />
<? }?>
<a href="<? echo $str; ?>search" > <?echo $post?></a><br /><img border="0" src="<? echo $str; ?>img/line.gif" width="137" height="1"><br />
<a href="<? echo $str; ?>ranks"> <?echo $ranks?></a><br /><img border="0" src="<? echo $str; ?>img/line.gif" width="137" height="1"><br />
<a href="<? echo $str; ?>score"> <? echo $score?></a><br /><img border="0" src="<? echo $str; ?>img/line.gif" width="137" height="1"><br />
<a href="<? echo $str; ?>register"> <?echo $register?></a><br /><img border="0" src="<? echo $str; ?>img/line.gif" width="137" height="1"><br />
<a href="<? echo $str; ?>read"> <?echo $howtoread?></a><br /><img border="0" src="<? echo $str; ?>img/line.gif" width="137" height="1"><br />
<a href="<? echo $str; ?>contact"> <?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 />
<img border="0" src="<? echo $str; ?>img/arrowleft.gif" width="11" height="11"/> <a href="<? echo $str; ?>translated?mode=1&pagenum=1&set=1#down"> <?echo $engtra?></a><br /><br />
<img border="0" src="<? echo $str; ?>img/arrowleft.gif" width="11" height="11"/><a href="<? echo $str; ?>translated?mode=2&pagenum=1&set=1#down"> <?echo $japtra?></a><br /><br />
<img border="0" src="<? echo $str; ?>img/new.gif" width="152" height="26"><br />
<br />
<img border="0" src="<? echo $str; ?>img/arrowleft.gif" width="11" height="11"/>
<a href="<? echo $str; ?>translated?mode=3&pagenum=1&set=1#down"> <?echo $engreq?></a>
<br /><br />
<img border="0" src="<? echo $str; ?>img/arrowleft.gif" width="11" height="11"/>
<a href ="<? echo $str; ?>translated?mode=4&pagenum=1&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 />
<img border="0" src="<? echo $str; ?>img/arrowleft.gif" width="11" height="11"/> <a href="<? echo $str; ?>translated?mode=5&set=1&pagenum=1&user=<?echo $_SESSION['username'];?>#down"><?echo $mytran?></a>
<br /><br /> <img border="0" src="<? echo $str; ?>img/arrowleft.gif" width="11" height="11"/> <a href="<? echo $str; ?>translated?mode=6&set=1&user=<?echo $_SESSION['username'];?>#down"><?echo $mylikes;?></a>
<br /><br /> <img border="0" src="<? echo $str; ?>img/arrowleft.gif" width="11" height="11"/> <a href="<? echo $str; ?>translated?mode=7&set=1&user=<?echo $_SESSION['username'];?>#down"><?echo $likesrec;?></a>
<br /><br /> <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 />
<?
}
1.)使用相同的参数调用相同的函数不一定会产生相同的输出。 可能还有其他影响输出的因素,例如环境变量,软件版本和and and。
因此, 只有在输出确实相同的情况下, 才不会以相同的方式调用函数这一事实引起关注。 你检查了吗? 你没有提到...
2.)在两个页面上添加相同的样式定义文件的事实并不意味着wohle样式定义在两个站点上都是相同的。 其他样式定义可能会干扰。 首先,显然浏览器的内置样式规则可能有所不同,然后可能包含其他样式文件。 此类情况始终对它们的包含顺序至关重要。 如果某些其他样式定义在样式之后得到验证,则结果可能会有所不同。
您将必须使用浏览器内置的调试器检查看到的实际结果。
如果具有相同输入的相同函数给出不同的输出,则该函数就是所谓的不确定函数 。
因为如果一个函数不是确定性的,那么这通常是没有用的,因为您不能以确定性的方式使用它(例如,我有一个问题A,我使用函数F的能力比可以处理问题A的好,除非F不清楚它确实)。
因此,使函数不确定的这些不确定性通常是缺陷,可能导致应用程序失败。 或者只是与您的情况不同的输出。
这可能是由于隐藏的依赖关系(例如,通过php.ini指定的函数中使用的函数注入了编码参数)或静态状态(HTTP请求不同,因此该函数的输出在上下文中不同) HTTP请求和浏览器和服务器的响应)。
该功能在这里不是问题。 在其中一个页面上,您指定了DOCTYPE
,却忘记了在另一页面上执行。 这就是为什么浏览器对它的解释不同。 请记住要始终将DOCTYPE
添加到页面中(除非您的代码使用HTML5和XML表示法)。 因此,添加:
<!doctype html>
在每个页面的顶部,因此呈现方式将与http://mrhowtosay.com/translated
页面上的呈现方式相同。 然后根据需要应用一些美学上的更改。 如果您坚持未指定DOCTYPE
页面,则永远无法真正确定输出的外观,并且很有可能在不同的浏览器上有所不同。
看来,您的问题确实与UTF-8有关。 我用firebug分析了示例页面,并发现html页面包含UTF-8 BOM-header ,但未翻译的页面包含两次!
文件开头的这三个字符()由您的编辑器编写,但不会显示。 使用十六进制编辑器,您可以看到不同之处,还可以转到文件属性并查看文件大小,您会注意到它们略有不同。
我的建议是将文件另存为UTF-8, 而不带 BOM表头。 特别是双标头使IE切换到怪癖模式(您可以按F12
键使IE中的开发人员工具可以看到它),从而导致不同的呈现。 在任何情况下,双BOM表头都是错误的。
编辑:
刚刚找到了一个很棒的工具,它可以检查utf-8 BOM和标头问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.