[英]JavaScript submit(); problem in IE / Safari / FF for Mac
[英]Latency problem on FF and safari and IE
所以我建立了一個功能來掃描基於$ _GET var的目錄,代碼為:
$dir="img/".$_GET["gal"];
$a=scandir($dir);
$b=array_slice($a,2);
for($i=1,$j=1;$i,$j<=count($b);$i++,$j++){
$marginRight=($i==6||$i==12||$i==18||$i==24||$i==30||$i==36)?"margin-right: 0":"margin-right: 13px";
if($i<10 && $j<10)
echo '<div class="GalThumbs" style="'.$marginRight.'"><a href="'.$dir.'/'.$_GET["gal"].'-0'.$j.'.jpg" rel="example3"><img src="'.$dir.'/'.$_GET["gal"].'-0'.$i.'.jpg"/></a></div>';
else{
echo '<div class="GalThumbs" style="'.$marginRight.'"><a href="'.$dir.'/'.$_GET["gal"].'-'.$j.'.jpg" rel="example3"><img src="'.$dir.'/'.$_GET["gal"].'-'.$i.'.jpg"/></a></div>';
}
/* if($i==11)
break; */
}
如果要掃描的圖像超過十個,則會發生延遲(瀏覽器重繪變慢),我使用注釋發現了這一點:
if($i==11)
break;
如果它是 :
if($i==10)
break;
不會有延遲。 不明白這是怎么回事。
讓我們看一下您的代碼,我想您在所有代碼及其作用中都迷失了方向。 通過一點清理,您應該能夠輕松調試延遲問題。
讓我們從for循環開始:
for($i=1,$j=1;$i,$j<=count($b);$i++,$j++)
兩個迭代器變量都並行設置。 我確定您在編寫內容時就已經考慮過,但這沒有任何意義。 如果不確定如何繼續,請嘗試減少問題。
一個變量完成任務。 同樣在這里:
if($i<10 && $j<10)
然后我偶然發現了這一點:
$marginRight=($i==6||$i==12||$i==18||$i==24||$i==30||$i==36)?"margin-right: 0":"margin-right: 13px";
您實際上正在尋找模數 :將$i
的余數除以6
。
if / else塊都包含相同的代碼。 根本不需要使用它。
然后,我假設要進行調試,請使用break退出for循環。
除此之外,您的代碼還可受益於縮進。
而且實際上只讀取目錄以獲取文件數,因此可以減少代碼以獲取文件數。
我們試試吧:
$gal = $_GET["gal"]; // FIXME sanitize the input
$dir = sprintf('img/%s', $gal);
$max = count(scandir($dir))-2;
for($i=1; $i<=$max; $i++)
{
$marginRight = ($i % 6 ? '13px' : '0');
$style = sprintf('margin-right: %s', $marginRight);
$src = sprintf('%s/%s-0%d.jpg', $dir, $gal, $i);
echo '<div class="GalThumbs" style="', htmlspecialchars($style), '">',
'<a href="', htmlspecialchars($src), '" rel="example3">',
'<img src="', htmlspecialchars($src),'"/>',
'</a>',
'</div>'
;
// FIXME debug
/* if($i==11) break; */
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.