【问题标题】:PHP variable in HTML table displays well in Chrome, Firefox, and Safari, but poorly in IE 8HTML 表中的 PHP 变量在 Chrome、Firefox 和 Safari 中显示良好,但在 IE 8 中显示不佳
【发布时间】:2011-06-08 09:05:18
【问题描述】:

下表在 Chrome、Firefox 和 Safari 中表现出色。它的左侧显示如下:

但是,在 Internet Explorer 8 中,左侧部分有时会显示如下:

在 IE8 中,使用短 cmets,仅显示变量 $row["username"] 的顶部,在屏幕截图中为“admin”。在这种情况下,我怎样才能让 IE8 显示完整的$row["username"]?

提前致谢,

约翰

源代码:

echo "<table class=\"commentecho\">";
$count = 1;
while ($row = mysql_fetch_array($result)) { 
    $dt1 = new DateTime($row["datecommented"], $tzFrom1);  
    $dt1->setTimezone($tzTo1);
    echo '<tr>';
    echo '<td style="border-left:2px solid #004993; border-bottom:2px solid #004993; border-top:2px solid #004993;" rowspan="3" class="commentnamecount">'.$count++.'</td>';
    echo '<td style="background: #CAE1FF; border-top:2px solid #004993;" class="commentname2user"><a href="http://www...com/.../index.php?profile='.$row["username"].'">'.$row["username"].'</a></td>';
    echo '<td style="border-right:2px solid #004993; border-bottom:2px solid #004993; border-top:2px solid #004993;" rowspan="3" class="commentname1" id="comment-' . $row["commentid"] . '">'.stripslashes($row["comment"]).'</td>';
    echo '</tr>';
    echo '<tr>';
    echo '<td style="background: #CAE1FF;" class="commentname2">'.$dt1->format('F j, Y').'</td>';
    echo '</tr>';
    echo '<tr>';
    echo '<td style="background: #CAE1FF; border-bottom:2px solid #004993;" class="commentname2a">'.$dt1->format('g:i a').'</td>';
    echo '</tr>';
    echo '<tr>';
    echo '<td class="commentname2a"></td>';
    echo '</tr>';
    }
echo "</table>";

CSS:

table.commentecho {
    margin-top: 20px;
    margin-left: 30px;
    text-align: left;
    font-family: Arial, Helvetica, sans-serif;
    font-weight: normal;
    font-size: 14px;
    color: #000000;
    width: 450px;
    table-layout:fixed;
    background-color: #FFFFFF;
    border: 2px #FFFFFF;
    border-collapse: collapse;
    border-spacing: 0px;
    padding: 0px;
    text-decoration: none;
    vertical-align: text-bottom;    

}

table.commentecho td {
   border: 0px solid #fff;  
   text-align: left; 
   height: 20px;


}

table.commentecho td a{
   padding: 2px;
   color: #004284;
   text-decoration: none;
   font-weight:bold;
   height: 20px;
}

table.commentecho td a:hover{
   background-color: #004284;
   padding: 2px;
   color: #FFFFFF;
   text-decoration: none;
   font-weight:bold;
   height: 20px;
}

.commentnamecount { width: 50px;
            font-family:Arial, Helvetica, sans-serif;
            font-size: 25px;   
            overflow:hidden !important;
            color: #004993;
            font-weight: bold;
            display:table-cell;   
            vertical-align: top;
            padding-bottom: 0px;
            padding-left: 5px;
            padding-top: 2px;

}


.commentname2user { width: 120px;
            color: #000000;
            font-family:Arial, Helvetica, sans-serif;
            font-size: 14px;
            font-weight: normal;
            height: 50px;
            padding-top:5px;
            padding-left: 5px;
            padding-bottom: 10px;
            vertical-align: top;

}

.commentname1 { 
            line-height: 170%;
            width: 410px;
            font-family: Georgia, "Times New Roman", Times, serif;
            overflow:hidden !important;
            color: #000000;
            padding-bottom: 30px;
            padding-left: 10px;
            vertical-align: top;
}


.commentname2 { width: 120px;
            color: #000000;
            font-family:Arial, Helvetica, sans-serif;
            font-size: 11px;
            font-weight: normal;
            height: 20px;
            padding-top:0px;
            padding-left: 5px;
            padding-bottom: 0px;
            vertical-align: top;

}

.commentname2 a{ width: 120px;
            color: #004284;
            font-family:Arial, Helvetica, sans-serif;
            font-size: 14px;
            font-weight: bold;
            height: 20px;
            padding-top:0px;
            padding-bottom: 10px;
            vertical-align: top;

}

.commentname2 a:hover{ width: 120px;
            color: #004284;
            font-family:Arial, Helvetica, sans-serif;
            font-size: 14px;
            font-weight: bold;
            text-decoration: underline;
            height: 20px;
            padding-top:0px;
            padding-bottom: 0px;
            vertical-align: top;

}

.commentname2a { width: 160px;
            overflow:hidden !important;
            color: #000000;
            font-family:Arial, Helvetica, sans-serif;
            font-size: 11px;
            font-weight: normal;
            height: 40px;
            padding-top:0px;
            padding-left: 5px;
            padding-bottom: 30px;
            vertical-align: top;

}   

【问题讨论】:

    标签: html css internet-explorer cross-browser


    【解决方案1】:

    嗯,你确实要求链接只有那么高:

    table.commentecho td a {
        height: 20px;
    }
    

    诀窍是,这不应该工作,而且在大多数浏览器中也不行:根据 CSS 标准,height 明确不适用于像 &lt;a&gt; 这样的内联元素。然而,在 IE 的Quirks Mode 中,它仍然存在。所以:

    • 移除无效的height:属性
    • 确保为您的页面提供标准模式 DOCTYPE 声明。您不希望 Quirks Mode 充满像这样令人讨厌的遗留兼容性错误。

    还记得在将数据字符串模板化为 HTML 时使用htmlspecialchars(),否则您将遇到跨站点脚本漏洞。 stripslashes() 不做这项工作,几乎可以肯定是一个错误。

    【讨论】:

    • 啊,好的。我会试一试。就 htmlspecialchars() 而言,您是否将其保存为安全预防措施,我应该将其放在所有 PHP 变量上?
    • 是的。无论您在何处获取一串纯文本并将其放入 HTML,您都需要对其进行编码以适应该上下文。这不仅仅是安全性;安全性是正确性的一个特例。输入的&amp;lt; 符号通常应该看起来像页面上的小于号(标记需要为&amp;lt;),而不是意外的HTML 标记。
    【解决方案2】:

    看起来像是行高问题。尝试在 .commentname2user 和 .commentname1 的 line-height 上放置一个实际像素/设置一个值

    【讨论】:

      【解决方案3】:

      我对你的 php 代码和你的 css 做了一些安排,但这在两个浏览器中看起来几乎相同,希望这会有所帮助...

      PHP 代码:

      echo '<table class="comments" cellspacing="0">';
      $count = 1;
      while ($row = mysql_fetch_array($result)) { 
          $dt1 = new DateTime($row["datecommented"], $tzFrom1);  
          $dt1->setTimezone($tzTo1);
          echo '<tr>';
          echo '<td class="comment-count">'.$count++.'</td>';
          echo '<td class="comment-user">';
          echo '<a href="http://www...com/.../index.php?profile='.$row["username"].'">'.$row["username"].'</a>'
          echo '<br/><span class="comment-date">'.$dt1->format('F j, Y').'</span><br/>';
          echo '<span class="comment-hour">'.$dt1->format('F j, Y').'</span>';
          echo '</td>';
          echo '<td class="comment-text" id="comment-' . $row["commentid"] . '">'.stripslashes($row["comment"]).'</td>';
          echo '</tr>';
          }
      echo "</table>";
      

      还有你的 CSS:

      table.comments{
          margin: 20px 0 30px;
          width: 450px;
      }
      table.comments td{
          vertical-align:top;
          border: solid #004993;
          border-width:2px 0 2px 0;
      }
      table.comments td.comment-count{
          border-left: 2px solid #004993;
          width: 50px;
          font:bold 25px Arial, Helvetica, sans-serif;
          color: #004993;
          vertical-align: top;
          padding:2px 0 0 5px;
      }
      table.comments td.comment-user{width:120px;background-color:#CAE1FF;padding: 5px;}
      table.comments td.comment-user a{
          font:bold 14px/20px Arial, Helvetica, sans-serif; 
          text-decoration:none;
          color: #004284;
          padding:2px;
      }
      table.comments td.comment-user a:hover{background-color: #004284; color:#CAE1FF;}
      table.comments td.comment-user span.comment-date, span.comment-hour{
          font:11px Arial, Helvetica, sans-serif;
      }
      table.comments td.comment-text{
          border-right: 2px solid #004993;
          width: 410px;
          font: normal 14px/20px Georgia, "Times New Roman", Times, serif;
          padding-left: 10px;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-27
        • 2018-10-09
        • 2023-03-17
        • 2021-07-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-17
        • 2015-01-11
        相关资源
        最近更新 更多