2010-10-21 13 views
10

ile yavaş, bu beni deli ediyor.Internet Explorer'daki bir satırdaki satırları gezmek, herhangi bir doctype

Yaklaşık 100 satırlık bir html tablom var. Üstünde fareyi hareket ettirdiğinizde satırların rengini değiştirmesini istiyorum.

Denedim:

  • : olaylar onmouseout/

  • onmouseover, CSS'deki hover javascript

  • jquery

    .hover
  • jquery .mouseover/.mouseout

  • e.target vb

ile masaya mükemmel hızlı Firefox'ta tüm işler üzerinde mouseover ve IE7/IE8 içinde korkunç yavaş. Ne tür doktrin olursa olsun. Ancak sayfanın doctype'ını tamamen kaldırırsam (quirks), IE'de de çok hızlıdır! Bir Doctype'ı (Aksi bunlar IE yavaş olsun!)

Herhangi öneri gibi görünüyor diğer (jquery ui) bileşenleri kullanmak beri

Henüz Doctype'ı sahip benim için kabul edilemez? (Hızlı IE gezinip)

tuhaflıklar modu: http://www.watikwil.nl/test_quirks.html

katı mod (IE yavaş gezinip): testine

http://www.watikwil.nl/test_strict.html

GÜNCELLEME: Ben bir arka plan kullanarak bulundu -Görüşen satır için görüntü aslında arka plan rengi kullanmaktan çok IE'de FASTER !! Ama bu sadece kullanırken hızlı çalışır: vurgulu. Jquery veya javascript yöntemleri hızlı çalışmıyor. Hala Firefox kadar hızlı değil ama benim için kabul edilebilir.

* GÜNCELLEME 2: Hala sorunlarınız. Her nasılsa o IE8 ile şimdi çalışıyor var: IE8 yılında (JqGrid yaptığı gibi) 3

GÜNCELLEME * satırlarda birden sınıfları sahip, özellikle hala çok yavaş. JqGrid'in kullandığı bazı sınıfları devre dışı bıraktı, fark yaratırsa artık bilmiyor. Kullanıyorum: arka plan görüntüsü ile gezdirin. Sorun şu ki, sayfayı IE7 Standartları modunu kullanmaya zorladığımda, daha hızlıdır. Ama IE7'de aynı sayfayı denediğimde, ÇOK yavaş tekrar ... gerçekten beni deli ediyor ...

+0

Tablo düzenini sabit olarak ayarlarsanız ne olur? Bu sorunu gözlemlediğimi söyleyemem (tablolarla veya değil). Test bağlantılarınız var mı? –

+0

ayar tablosu düzeninin sabitlenmesine yardımcı olmuyor ... quirks modunda çok daha hızlı! DIV'leri kullanarak bir tablo kurmaya çalıştım ve

'u kullanmaktan çok daha hızlı görünüyor, ancak üzerinde çalıştığım uygulama JqGrid kullanan bir
Dylan

+0

kullanıyor. Bazı test linkleri ekledim, IE'de gezinme bir doctype kullanarak çok daha yavaş (sıkı) – Dylan

cevap

0

Doküman değişimini görüntülerken sorunu gösterebilir, sorun, doctype neden olmaz. Sadece javascript'in neden olduğundan şüphelenebilirim, ancak önce ele almanız gereken bazı doğrulama sorunlarınız var. HTML'nizi bu hata listesi için doğrulayın.

+0

Şimdi sıkı örneği html5 olarak değiştirdim ve şimdi doğru olarak doğrular. Herhangi bir fark yaratmaz ... Eğer render modunu IE7 olarak değiştirirsem (Internet Explorer 8'de), fareyle hızlıca yanıp söner. – Dylan

+0

Doktrin ile uğraşmayı bırak! Bu, bir sayfaya giden ve ASLA değiştiren ilk şey. Tarayıcının bunu nasıl işlediği konusunda NO etkisi olmamalı, ancak burada IE hakkında konuşuyoruz ve IE'ye hiçbir şey yapmamaya hiçbir zaman güvenemeyiz. – Rob

+0

Onu xhtml olarak değiştirdim, javascript'i kaldırdı ve hoverlamayı css: hover olarak değiştirdi. IE8'de hala çok yavaş. – Dylan

3

Evet, ben de bu sorunu yaşıyorum ve tablo oluşturma hızı IE'de sonsuza kadar bir sorun oldu.Fareyi sürüklerken bir CPU peg (çiftimde IE ile% 50 kullanım) fark edeceksiniz.- Metin süsleme özelliğini kullanabilirsiniz: CSS altını çizin: bu tablo yeniden hesaplama etkisine neden olmadan vurgulu.

Rob'un, doctype'ın ilgisiz (ve kutsal) olduğuna dair yorumunu anlıyorum, ama bu isteksiz bir düşüncedir. Sorun, bir hücre öznitelikleri veya bireysel satır özniteliklerine sahip olmayan çok spartan bir tablo ile kolayca yeniden üretilebilir: hover CSS. Tabii ki, DOCTYPE'in bunun üzerindeki etkisini ölçmek zordur, çünkü STRICT'yi kapattığınız zaman IE'nin uygulama yeteneğini devre dışı bırakırsınız: link olmayan elemanlara gelin. Sayfada düz CSS kenarlıklı ve altyazı veya CSS ifadeleri vb. Olmayan metnin alt çizimlerini çizmek de soruna neden olur, ancak metin dekorasyonunda sorun yoktur. Görünüşe göre IE, tablonuzdaki bağlantıların olması durumunda, bu CSS kuralı için özel olarak tablo yeniden hesaplamayı bastırır. (Diğer bir deyişle, MS geliştiriciler kusur ilk kez bırakmadan önce bu sorunu bilen ve daha sonra orada 2 büyük sürümlerinde hala ne güzel :)..) Yani, burada bir soğutucu testi var:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>IE TD performance</title><style type="text/css"> 
    a:hover { text-decoration: line-through; } 
    a:hover { line-height: 1.1em; } 
</style></head><body><table><tbody> 
    <tr> 
     <td><a href='#'>Test</a></td> 
etc. 

Not Yukarıda, 'satır boyu' CSS kuralını kaldırırsanız veya DOCTYPE TRANSITIONAL seçeneğine geçerseniz sorunu görmezsiniz. Ayrıca, CPU'nuza ihtiyacınız olan kaç hücreye bağlı olduğuna da dikkat edin. Ayrıca, CSS stilleri değiştiğinde bu kötü performansın IE tablolarını oluşturmasına neden olan satır veya sütunlarda (VEYA çoklu tabloları!) Toplam hücre sayısı olduğunu unutmayın. Bir tahminim var

(hiç denemedim, ancak bunu yaparsanız kodunuzu isterdim:>) yerine tablo satırının kendisinde rengini değiştirerek eğer, bunu önünde şeffaf bir png bırakmaları IE'nin tablo boyutlarını yeniden hesaplamasına neden olmayan, aradığınız performansı elde edersiniz. Muhtemelen tablonuzu kaydırmak için kullandığınız div'a yerleştirilebilir, tablolarla diğer IE sorunlarına teşekkürler. Sanırım bu yöntemle uygun bir vurgulu efekti elde edebilirsiniz (grafiksel olarak tam olarak ne yaptığınızı değil, görsel olarak da çalışabilirsiniz).

Masamı sabit boyutlarla divlara dönüştürdüm, MS'yi bir kez daha kandırarak tasarımımı atmak veya proje saatlerini harcamak arasında seçim yapmamı sağladı.

+0

P.S. Kösteklemenin net olmadığı durumda, zaten jquery kullandığınız için, TR'nin sol üst ve sağ alt köşelerinin pozisyonunu almak için neden kullanmaya çalışmayın ve şeffaf bir png ile kesinlikle konumlandırılmış bir div yerleştirin. Masanın dışında? – Shannon

+0

, başka bir kişinin, öğe stilini istenen niteliklere göre değiştirmekten ziyade, belirli stil niteliklerini (ör. Arka plan) doğrudan öğeye uygularsanız IE'nin daha az yeniden çizim yapacağını bildirir. – Shannon

İlgili konular