padding تیبل اول و margin تیبل دوم رو صفر بده ببین حل میشه؟
توی براوزرت هم یه view source بکن ، ببین چی داره برگردونده میشه
شاید یه جایی ، یه br ی اتفاقی اومده باشه تو کار
موفق باشید
view source:
<table border=1 width="100%" cellspacing="0" cellpadding="0">
<tr>
<td><table border="1" width="50%" cellspacing="0" cellpadding="0">
<tr>
<td>test</td>
</tr>
</table></td>
</tr>
</table>
درسته ، این مشکل با کاراکترست utf-8 هست ، اما توی IE . توی Firefox مشکلی نداره.
والا اینم یه جورشه دیگه!!!!!!
به این میگن باگ ، نه؟
استاندارد های w3 رو رعایت کن ، سایتت بدون مشکل نمایش داده میشهچیکار کنم؟
<td valign=top>
td اولي رو اينطوري بنويس:
کد:<td valign=top>
استاندارد های w3 رو رعایت کن ، سایتت بدون مشکل نمایش داده میشه
در مورد اون یه خط اضافی یه راه دارم ، ولی همچین تو دل برو نیست.
چک کن که مرورگری که داره نمایش میده چیه ، اگه IE بود ، margin-top تیبل دومی رو منفی بده.
مشکل مربوطه به هیچ وجه به include ربطی نداره ، مشکل ، مشکل مرورگر هست.پس اینهمه سایت چیکار میکنن؟ یعنی با این اوصاف دستور include دوزار نمی ارزه!
میتونی با php بفهمی ، میتونی هم با خود مرورگر بفهمی که مرورگر چیه.حالا این راه حلی که میگی رو چجوری انجامش بدم ؟
<?
function _get_browser()
{
$browser = array ( //reversed array
"OPERA",
"MSIE", // parent
"NETSCAPE",
"FIREFOX",
"SAFARI",
"KONQUEROR",
"MOZILLA" // parent
);
$info[browser] = "OTHER";
foreach ($browser as $parent)
{
if ( ($s = strpos(strtoupper($_SERVER['HTTP_USER_AGENT']), $parent)) !== FALSE )
{
$f = $s + strlen($parent);
$version = substr($_SERVER['HTTP_USER_AGENT'], $f, 5);
$version = preg_replace('/[^0-9,.]/','',$version);
$info[browser] = $parent;
$info[version] = $version;
break; // first match wins
}
}
return $info;
}
$thisBrowser=_get_browser['browser'];
?>
<table border=1 width="100%" cellspacing="0" cellpadding="0">
<tr>
<td><table border="1" width="50%" cellspacing="0" cellpadding="0" <? if($thisBrowser=="MSIE") echo "style='margin-top: -20px;'";?>>
<tr>
<td>test</td>
</tr>
</table></td>
</tr>
</table>
<table border=1 width="100%" cellspacing="0" cellpadding="0">
<tr>
<td><table border="1" width="50%" cellspacing="0" cellpadding="0">
<tr>
<td>test</td>
</tr>
</table></td>
</tr>
</table>
جالبه !
ولی جالبترش دلیل این مشکله که کشفش کردم !
ببینید در واقع مشکل از UTF-8 و... نیست ! بلکه با تغییر اون مشکل ظاهر میشه ، در واقع مشکل جای دیگست . بیخود دارید به utf-8 و مایکروسافت فحش میدید !!!
شما اگر دقت کنید در خط 3 خروجی یعنی این کد:
درست در بین دو تگ table و td یک کارکتر زائد که دیده نمیشه وجود داره ! کدش اینه:  (جالبته که ادیتور اینجا هم معادل کدش رو قرار میده و کد هم دیده نمیشه ! مجبور شدم ; رو از آخرش بر دارم که به عنوان کد جدول یونی کد بهش نگاه نکنه !!)HTML:<table border=1 width="100%" cellspacing="0" cellpadding="0"> <tr> <td><table border="1" width="50%" cellspacing="0" cellpadding="0"> <tr> <td>test</td> </tr> </table></td> </tr> </table>
زمانی که encoding صفحه به صورت utf-8 تعریف میشه معادل این کد که در واقع یک کارکتر هیچی!! است ظاهر میشه که دیده نمیشه و فاصله ای هم ایجاد نمیکنه که دیده بشه ولی همون کافیه که یک کارکتر محسوب بشه و table بعد از خودش رو یه ردیف به پایین ببره.
اما زمانی که مثلا encoding صفحه رو به windows-1252 تبدیل میکنید این باعث میشه که بجای تمامی کدهای جدول unicode معادل کدهای اونها قرار بگیره که این قاعده شامل این کارکتر عجیب و غریب هم میشه و وقتی encoding رو عوض کنید کارکتر نامرئی خودش رو به صورت کد نشون میده !!!
جالب بود نه ؟
حالا شما کدت رو یه بر رسی کن درست قبل از جایی که include آغاز میشه و درست در ابتدای فایلی که قراره include بشه رو چک کن ، قبلا گفتم این کارکتر به صورت عادی دیده نمیشه میتونی کدهاتو تو فرونت پیج کپی پست کنی و encoding رو به windows-1252 تغییر بدی تا کارکتر به صورت کد خودش رو نشون بده و حداقل جاشو پیدا کنی و حذفش کنی. البته در کد خروجی که شما قرار دادید این کد وجود داره و جاش هم مشخصه !
میتونی وقتی مکان نما روی اولین کارکتره شیفت رو نگه داری و یکی یکی کارکترها رو پیمایش کنی تا جایی که ببینی درجا میزنه همونجا کارکتر ویژست و حذفش کن.
دیگه هیچ مشکلی نیست!
بازم مشکلی بود در خدمتیم ;-)
خوش باشید
نبی
مشکل مربوطه به هیچ وجه به include ربطی نداره ، مشکل ، مشکل مرورگر هست.
میتونی با php بفهمی ، میتونی هم با خود مرورگر بفهمی که مرورگر چیه.
توی php :
کد:<? function _get_browser() { $browser = array ( //reversed array "OPERA", "MSIE", // parent "NETSCAPE", "FIREFOX", "SAFARI", "KONQUEROR", "MOZILLA" // parent ); $info[browser] = "OTHER"; foreach ($browser as $parent) { if ( ($s = strpos(strtoupper($_SERVER['HTTP_USER_AGENT']), $parent)) !== FALSE ) { $f = $s + strlen($parent); $version = substr($_SERVER['HTTP_USER_AGENT'], $f, 5); $version = preg_replace('/[^0-9,.]/','',$version); $info[browser] = $parent; $info[version] = $version; break; // first match wins } } return $info; } $thisBrowser=_get_browser['browser']; ?> <table border=1 width="100%" cellspacing="0" cellpadding="0"> <tr> <td><table border="1" width="50%" cellspacing="0" cellpadding="0" <? if($thisBrowser=="MSIE") echo "style='margin-top: -20px;'";?>> <tr> <td>test</td> </tr> </table></td> </tr> </table>
-20 رو کم و زیاد کن تا به نتیجه ی مطلوب برسی.
راستش راه حل درست و حسابی ش اینه که منتظر مایکروسافت بشینی تا مرورگرش رو درست کنه.![]()